/* Generated by Cython 0.29.26 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "name": "apischema.deserialization.methods",
        "sources": [
            "apischema/deserialization/methods.pyx"
        ]
    },
    "module_name": "apischema.deserialization.methods"
}
END: Cython Metadata */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.6+ or Python 3.3+.
#else
#define CYTHON_ABI "0_29_26"
#define CYTHON_HEX_VERSION 0x001D1AF0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #if PY_VERSION_HEX >= 0x02070000
    #define HAVE_LONG_LONG
  #endif
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 0
  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1)
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
  #endif
  #ifndef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
  #endif
  #ifndef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_MAJOR_VERSION < 3
    #include "longintrepr.h"
  #endif
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
           typedef unsigned char     uint8_t;
           typedef unsigned int      uint32_t;
        #else
           typedef unsigned __int8   uint8_t;
           typedef unsigned __int32  uint32_t;
        #endif
    #endif
#else
   #include <stdint.h>
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus) && __cplusplus >= 201103L
    #if __has_cpp_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH [[fallthrough]]
    #elif __has_cpp_attribute(clang::fallthrough)
      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
    #elif __has_cpp_attribute(gnu::fallthrough)
      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__ ) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif

#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_DefaultClassType PyType_Type
#if PY_VERSION_HEX >= 0x030B00A1
    static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
                                                    PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                                    PyObject *fv, PyObject *cell, PyObject* fn,
                                                    PyObject *name, int fline, PyObject *lnos) {
        PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
        PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
        const char *fn_cstr=NULL;
        const char *name_cstr=NULL;
        PyCodeObject* co=NULL;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        if (!(kwds=PyDict_New())) goto end;
        if (!(argcount=PyLong_FromLong(a))) goto end;
        if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
        if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
        if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
        if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
        if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
        if (!(nlocals=PyLong_FromLong(l))) goto end;
        if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
        if (!(stacksize=PyLong_FromLong(s))) goto end;
        if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
        if (!(flags=PyLong_FromLong(f))) goto end;
        if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
        if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
        if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
        if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
        if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
        if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
        if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
        Py_XDECREF((PyObject*)co);
        co = (PyCodeObject*)call_result;
        call_result = NULL;
        if (0) {
            cleanup_code_too:
            Py_XDECREF((PyObject*)co);
            co = NULL;
        }
        end:
        Py_XDECREF(kwds);
        Py_XDECREF(argcount);
        Py_XDECREF(posonlyargcount);
        Py_XDECREF(kwonlyargcount);
        Py_XDECREF(nlocals);
        Py_XDECREF(stacksize);
        Py_XDECREF(replace);
        Py_XDECREF(call_result);
        Py_XDECREF(empty);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return co;
    }
#else
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
  #define PyMem_RawMalloc(n)           PyMem_Malloc(n)
  #define PyMem_RawRealloc(p, n)       PyMem_Realloc(p, n)
  #define PyMem_RawFree(p)             PyMem_Free(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
#else
#define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #if defined(PyUnicode_IS_READY)
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #else
  #define __Pyx_PyUnicode_READY(op)       (0)
  #endif
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
  #else
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
  #endif
  #else
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #endif
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#ifndef PyObject_Unicode
  #define PyObject_Unicode             PyObject_Str
#endif
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
#else
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#define __PYX_MARK_ERR_POS(f_index, lineno) \
    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__apischema__deserialization__methods
#define __PYX_HAVE_API__apischema__deserialization__methods
/* Early includes */
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

static PyObject *__pyx_m = NULL;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_cython_runtime = NULL;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "apischema/deserialization/methods.pyx",
  "stringsource",
};

/*--- Type declarations ---*/
struct __pyx_obj_9apischema_15deserialization_7methods_Constraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint;
struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly;
struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_Field;
struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField;
struct __pyx_obj_9apischema_15deserialization_7methods_PatternField;
struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField;
struct __pyx_obj_9apischema_15deserialization_7methods_Constructor;
struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor;
struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor;
struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField;
struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField;
struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor;
struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative;
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod;
struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod;
struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize;
struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr;

/* "apischema/deserialization/methods.pyx":33
 * 
 * 
 * cdef class Constraint():             # <<<<<<<<<<<<<<
 *     cdef readonly object error
 *     cdef int _dispatch
 */
struct __pyx_obj_9apischema_15deserialization_7methods_Constraint {
  PyObject_HEAD
  PyObject *error;
  int _dispatch;
};


/* "apischema/deserialization/methods.pyx":40
 *         self.error = error
 * 
 * cdef class MinimumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long minimum
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_vtab;
  long minimum;
};


/* "apischema/deserialization/methods.pyx":51
 *         self._dispatch = 0
 * 
 * cdef class MaximumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long maximum
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_vtab;
  long maximum;
};


/* "apischema/deserialization/methods.pyx":62
 *         self._dispatch = 1
 * 
 * cdef class ExclusiveMinimumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long exc_min
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_vtab;
  long exc_min;
};


/* "apischema/deserialization/methods.pyx":73
 *         self._dispatch = 2
 * 
 * cdef class ExclusiveMaximumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long exc_max
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_vtab;
  long exc_max;
};


/* "apischema/deserialization/methods.pyx":84
 *         self._dispatch = 3
 * 
 * cdef class MultipleOfConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long mult_of
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_vtab;
  long mult_of;
};


/* "apischema/deserialization/methods.pyx":95
 *         self._dispatch = 4
 * 
 * cdef class MinLengthConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_len
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_vtab;
  long min_len;
};


/* "apischema/deserialization/methods.pyx":106
 *         self._dispatch = 5
 * 
 * cdef class MaxLengthConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_len
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_vtab;
  long max_len;
};


/* "apischema/deserialization/methods.pyx":117
 *         self._dispatch = 6
 * 
 * cdef class PatternConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly object pattern
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_PatternConstraint *__pyx_vtab;
  PyObject *pattern;
};


/* "apischema/deserialization/methods.pyx":128
 *         self._dispatch = 7
 * 
 * cdef class MinItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_items
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_vtab;
  long min_items;
};


/* "apischema/deserialization/methods.pyx":139
 *         self._dispatch = 8
 * 
 * cdef class MaxItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_items
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_vtab;
  long max_items;
};


/* "apischema/deserialization/methods.pyx":150
 *         self._dispatch = 9
 * 
 * cdef class UniqueItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly bint unique
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_vtab;
  int unique;
};


/* "apischema/deserialization/methods.pyx":162
 *         self._dispatch = 10
 * 
 * cdef class MinPropertiesConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_properties
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_vtab;
  long min_properties;
};


/* "apischema/deserialization/methods.pyx":173
 *         self._dispatch = 11
 * 
 * cdef class MaxPropertiesConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_properties
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_vtab;
  long max_properties;
};


/* "apischema/deserialization/methods.pyx":184
 *         self._dispatch = 12
 * 
 * cdef class DeserializationMethod():             # <<<<<<<<<<<<<<
 *     cdef int _dispatch
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod {
  PyObject_HEAD
  int _dispatch;
};


/* "apischema/deserialization/methods.pyx":187
 *     cdef int _dispatch
 * 
 * cdef class RecMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object lazy
 *     cdef readonly object method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RecMethod *__pyx_vtab;
  PyObject *lazy;
  PyObject *method;
};


/* "apischema/deserialization/methods.pyx":199
 *         self._dispatch = 0
 * 
 * cdef class ValidatorMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly object validators
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_vtab;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  PyObject *validators;
  PyObject *aliaser;
};


/* "apischema/deserialization/methods.pyx":213
 *         self._dispatch = 1
 * 
 * cdef class CoercerMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object coercer
 *     cdef readonly type cls
 */
struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_CoercerMethod *__pyx_vtab;
  PyObject *coercer;
  PyTypeObject *cls;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
};


/* "apischema/deserialization/methods.pyx":227
 *         self._dispatch = 2
 * 
 * cdef class TypeCheckMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object expected
 *     cdef readonly DeserializationMethod fallback
 */
struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_vtab;
  PyObject *expected;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *fallback;
};


/* "apischema/deserialization/methods.pyx":239
 *         self._dispatch = 3
 * 
 * cdef class AnyMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict constraints
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_AnyMethod *__pyx_vtab;
  PyObject *constraints;
};


/* "apischema/deserialization/methods.pyx":249
 *         self._dispatch = 4
 * 
 * cdef class ListCheckOnlyMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_vtab;
  PyObject *constraints;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
};


/* "apischema/deserialization/methods.pyx":261
 *         self._dispatch = 5
 * 
 * cdef class ListMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListMethod *__pyx_vtab;
  PyObject *constraints;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
};


/* "apischema/deserialization/methods.pyx":273
 *         self._dispatch = 6
 * 
 * cdef class SetMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SetMethod *__pyx_vtab;
  PyObject *constraints;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
};


/* "apischema/deserialization/methods.pyx":285
 *         self._dispatch = 7
 * 
 * cdef class VariadicTupleMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_vtab;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
};


/* "apischema/deserialization/methods.pyx":295
 *         self._dispatch = 8
 * 
 * cdef class LiteralMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict value_map
 *     cdef readonly object error
 */
struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_LiteralMethod *__pyx_vtab;
  PyObject *value_map;
  PyObject *error;
  PyObject *coercer;
  PyObject *types;
};


/* "apischema/deserialization/methods.pyx":311
 *         self._dispatch = 9
 * 
 * cdef class MappingCheckOnly(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_vtab;
  PyObject *constraints;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *key_method;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
};


/* "apischema/deserialization/methods.pyx":325
 *         self._dispatch = 10
 * 
 * cdef class MappingMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingMethod *__pyx_vtab;
  PyObject *constraints;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *key_method;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
};


/* "apischema/deserialization/methods.pyx":339
 *         self._dispatch = 11
 * 
 * cdef class Field():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly str alias
 */
struct __pyx_obj_9apischema_15deserialization_7methods_Field {
  PyObject_HEAD
  PyObject *name;
  PyObject *alias;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  int required;
  PyObject *required_by;
  int fall_back_on_default;
};


/* "apischema/deserialization/methods.pyx":355
 *         self.fall_back_on_default = fall_back_on_default
 * 
 * cdef class FlattenedField():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly tuple aliases
 */
struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField {
  PyObject_HEAD
  PyObject *name;
  PyObject *aliases;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  int fall_back_on_default;
};


/* "apischema/deserialization/methods.pyx":367
 *         self.fall_back_on_default = fall_back_on_default
 * 
 * cdef class PatternField():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly object pattern
 */
struct __pyx_obj_9apischema_15deserialization_7methods_PatternField {
  PyObject_HEAD
  PyObject *name;
  PyObject *pattern;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  int fall_back_on_default;
};


/* "apischema/deserialization/methods.pyx":379
 *         self.fall_back_on_default = fall_back_on_default
 * 
 * cdef class AdditionalField():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly DeserializationMethod method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField {
  PyObject_HEAD
  PyObject *name;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  int fall_back_on_default;
};


/* "apischema/deserialization/methods.pyx":389
 *         self.fall_back_on_default = fall_back_on_default
 * 
 * cdef class Constructor():             # <<<<<<<<<<<<<<
 *     cdef readonly object cls
 *     cdef int _dispatch
 */
struct __pyx_obj_9apischema_15deserialization_7methods_Constructor {
  PyObject_HEAD
  PyObject *cls;
  int _dispatch;
};


/* "apischema/deserialization/methods.pyx":396
 *         self.cls = cls
 * 
 * cdef class NoConstructor(Constructor):             # <<<<<<<<<<<<<<
 * 
 *     cpdef construct(self, dict fields):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoConstructor *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":405
 *         self._dispatch = 0
 * 
 * cdef class RawConstructor(Constructor):             # <<<<<<<<<<<<<<
 * 
 *     cpdef construct(self, dict fields):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RawConstructor *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":414
 *         self._dispatch = 1
 * 
 * cdef class DefaultField():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly object default_value
 */
struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField {
  PyObject_HEAD
  PyObject *name;
  PyObject *default_value;
};


/* "apischema/deserialization/methods.pyx":422
 *         self.default_value = default_value
 * 
 * cdef class FactoryField():             # <<<<<<<<<<<<<<
 *     cdef readonly str name
 *     cdef readonly object factory
 */
struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField {
  PyObject_HEAD
  PyObject *name;
  PyObject *factory;
};


/* "apischema/deserialization/methods.pyx":430
 *         self.factory = factory
 * 
 * cdef class FieldsConstructor(Constructor):             # <<<<<<<<<<<<<<
 *     cdef readonly long nb_fields
 *     cdef readonly tuple default_fields
 */
struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_vtab;
  long nb_fields;
  PyObject *default_fields;
  PyObject *factory_fields;
};


/* "apischema/deserialization/methods.pyx":445
 *         self._dispatch = 2
 * 
 * cdef class SimpleObjectMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple fields
 */
struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_vtab;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *constructor;
  PyObject *fields;
  PyObject *all_aliases;
  int typed_dict;
  PyObject *missing;
  PyObject *unexpected;
};


/* "apischema/deserialization/methods.pyx":465
 *         self._dispatch = 12
 * 
 * cdef class ObjectMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple constraints
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ObjectMethod *__pyx_vtab;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *constructor;
  PyObject *constraints;
  PyObject *fields;
  PyObject *flattened_fields;
  PyObject *pattern_fields;
  PyObject *additional_field;
  PyObject *all_aliases;
  int additional_properties;
  int typed_dict;
  PyObject *validators;
  PyObject *init_defaults;
  PyObject *post_init_modified;
  PyObject *aliaser;
  PyObject *missing;
  PyObject *unexpected;
  PyObject *discriminator;
  int aggregate_fields;
};


/* "apischema/deserialization/methods.pyx":511
 *         self._dispatch = 13
 * 
 * cdef class NoneMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoneMethod *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":519
 *         self._dispatch = 14
 * 
 * cdef class IntMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":527
 *         self._dispatch = 15
 * 
 * cdef class FloatMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":535
 *         self._dispatch = 17
 * 
 * cdef class StrMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":543
 *         self._dispatch = 19
 * 
 * cdef class BoolMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_BoolMethod *__pyx_vtab;
};


/* "apischema/deserialization/methods.pyx":551
 *         self._dispatch = 21
 * 
 * cdef class ConstrainedIntMethod(IntMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod __pyx_base;
  PyObject *constraints;
};


/* "apischema/deserialization/methods.pyx":561
 *         self._dispatch = 16
 * 
 * cdef class ConstrainedFloatMethod(FloatMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod __pyx_base;
  PyObject *constraints;
};


/* "apischema/deserialization/methods.pyx":571
 *         self._dispatch = 18
 * 
 * cdef class ConstrainedStrMethod(StrMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod __pyx_base;
  PyObject *constraints;
};


/* "apischema/deserialization/methods.pyx":581
 *         self._dispatch = 20
 * 
 * cdef class SubprimitiveMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly type cls
 *     cdef readonly DeserializationMethod method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_vtab;
  PyTypeObject *cls;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
};


/* "apischema/deserialization/methods.pyx":593
 *         self._dispatch = 22
 * 
 * cdef class TupleMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly object min_len_error
 */
struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TupleMethod *__pyx_vtab;
  PyObject *constraints;
  PyObject *min_len_error;
  PyObject *max_len_error;
  PyObject *elt_methods;
};


/* "apischema/deserialization/methods.pyx":609
 *         self._dispatch = 23
 * 
 * cdef class OptionalMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 *     cdef readonly object coercer
 */
struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_OptionalMethod *__pyx_vtab;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *value_method;
  PyObject *coercer;
};


/* "apischema/deserialization/methods.pyx":621
 *         self._dispatch = 24
 * 
 * cdef class UnionByTypeMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict method_by_cls
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_vtab;
  PyObject *method_by_cls;
};


/* "apischema/deserialization/methods.pyx":631
 *         self._dispatch = 25
 * 
 * cdef class UnionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple alt_methods
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionMethod *__pyx_vtab;
  PyObject *alt_methods;
};


/* "apischema/deserialization/methods.pyx":641
 *         self._dispatch = 26
 * 
 * cdef class ConversionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod *__pyx_vtab;
  PyObject *converter;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
};


/* "apischema/deserialization/methods.pyx":653
 *         self._dispatch = 27
 * 
 * cdef class ConversionWithValueErrorMethod(ConversionMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod __pyx_base;
};


/* "apischema/deserialization/methods.pyx":663
 *         self._dispatch = 28
 * 
 * cdef class ConversionAlternative():             # <<<<<<<<<<<<<<
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative {
  PyObject_HEAD
  PyObject *converter;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *method;
  int value_error;
};


/* "apischema/deserialization/methods.pyx":673
 *         self.value_error = value_error
 * 
 * cdef class ConversionUnionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple alternatives
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_vtab;
  PyObject *alternatives;
};


/* "apischema/deserialization/methods.pyx":683
 *         self._dispatch = 29
 * 
 * cdef class DiscriminatorMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly str alias
 *     cdef readonly dict mapping
 */
struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod {
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod __pyx_base;
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_vtab;
  PyObject *alias;
  PyObject *mapping;
  PyObject *missing;
  PyObject *error;
};


/* "apischema/deserialization/methods.pyx":1150
 *                 raise merge_errors(err, bad_type(data, NoneType))
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):             # <<<<<<<<<<<<<<
 *         try:
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 */
struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize {
  PyObject_HEAD
  PyObject *__pyx_v_data;
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self;
};


/* "apischema/deserialization/methods.pyx":1157
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))             # <<<<<<<<<<<<<<
 *             raise merge_errors(err, bad_type(data, *other_classes))
 * 
 */
struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *__pyx_outer_scope;
  PyObject *__pyx_v_cls;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
};



/* "apischema/deserialization/methods.pyx":40
 *         self.error = error
 * 
 * cdef class MinimumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long minimum
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinimumConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MinimumConstraint;


/* "apischema/deserialization/methods.pyx":51
 *         self._dispatch = 0
 * 
 * cdef class MaximumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long maximum
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaximumConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MaximumConstraint;


/* "apischema/deserialization/methods.pyx":62
 *         self._dispatch = 1
 * 
 * cdef class ExclusiveMinimumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long exc_min
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;


/* "apischema/deserialization/methods.pyx":73
 *         self._dispatch = 2
 * 
 * cdef class ExclusiveMaximumConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long exc_max
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;


/* "apischema/deserialization/methods.pyx":84
 *         self._dispatch = 3
 * 
 * cdef class MultipleOfConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long mult_of
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MultipleOfConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MultipleOfConstraint;


/* "apischema/deserialization/methods.pyx":95
 *         self._dispatch = 4
 * 
 * cdef class MinLengthConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_len
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinLengthConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MinLengthConstraint;


/* "apischema/deserialization/methods.pyx":106
 *         self._dispatch = 5
 * 
 * cdef class MaxLengthConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_len
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxLengthConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MaxLengthConstraint;


/* "apischema/deserialization/methods.pyx":117
 *         self._dispatch = 6
 * 
 * cdef class PatternConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly object pattern
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_PatternConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_PatternConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_PatternConstraint;


/* "apischema/deserialization/methods.pyx":128
 *         self._dispatch = 7
 * 
 * cdef class MinItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_items
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinItemsConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MinItemsConstraint;


/* "apischema/deserialization/methods.pyx":139
 *         self._dispatch = 8
 * 
 * cdef class MaxItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_items
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxItemsConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MaxItemsConstraint;


/* "apischema/deserialization/methods.pyx":150
 *         self._dispatch = 9
 * 
 * cdef class UniqueItemsConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly bint unique
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UniqueItemsConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_UniqueItemsConstraint;


/* "apischema/deserialization/methods.pyx":162
 *         self._dispatch = 10
 * 
 * cdef class MinPropertiesConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long min_properties
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinPropertiesConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MinPropertiesConstraint;


/* "apischema/deserialization/methods.pyx":173
 *         self._dispatch = 11
 * 
 * cdef class MaxPropertiesConstraint(Constraint):             # <<<<<<<<<<<<<<
 *     cdef readonly long max_properties
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxPropertiesConstraint {
  PyObject *(*validate)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_vtabptr_9apischema_15deserialization_7methods_MaxPropertiesConstraint;


/* "apischema/deserialization/methods.pyx":187
 *     cdef int _dispatch
 * 
 * cdef class RecMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object lazy
 *     cdef readonly object method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RecMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RecMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_RecMethod;


/* "apischema/deserialization/methods.pyx":199
 *         self._dispatch = 0
 * 
 * cdef class ValidatorMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly object validators
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ValidatorMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ValidatorMethod;


/* "apischema/deserialization/methods.pyx":213
 *         self._dispatch = 1
 * 
 * cdef class CoercerMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object coercer
 *     cdef readonly type cls
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_CoercerMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_CoercerMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_CoercerMethod;


/* "apischema/deserialization/methods.pyx":227
 *         self._dispatch = 2
 * 
 * cdef class TypeCheckMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object expected
 *     cdef readonly DeserializationMethod fallback
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TypeCheckMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_TypeCheckMethod;


/* "apischema/deserialization/methods.pyx":239
 *         self._dispatch = 3
 * 
 * cdef class AnyMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict constraints
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_AnyMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_AnyMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_AnyMethod;


/* "apischema/deserialization/methods.pyx":249
 *         self._dispatch = 4
 * 
 * cdef class ListCheckOnlyMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListCheckOnlyMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ListCheckOnlyMethod;


/* "apischema/deserialization/methods.pyx":261
 *         self._dispatch = 5
 * 
 * cdef class ListMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ListMethod;


/* "apischema/deserialization/methods.pyx":273
 *         self._dispatch = 6
 * 
 * cdef class SetMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SetMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SetMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_SetMethod;


/* "apischema/deserialization/methods.pyx":285
 *         self._dispatch = 7
 * 
 * cdef class VariadicTupleMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_VariadicTupleMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_VariadicTupleMethod;


/* "apischema/deserialization/methods.pyx":295
 *         self._dispatch = 8
 * 
 * cdef class LiteralMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict value_map
 *     cdef readonly object error
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_LiteralMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_LiteralMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_LiteralMethod;


/* "apischema/deserialization/methods.pyx":311
 *         self._dispatch = 9
 * 
 * cdef class MappingCheckOnly(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingCheckOnly {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_vtabptr_9apischema_15deserialization_7methods_MappingCheckOnly;


/* "apischema/deserialization/methods.pyx":325
 *         self._dispatch = 10
 * 
 * cdef class MappingMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_MappingMethod;


/* "apischema/deserialization/methods.pyx":396
 *         self.cls = cls
 * 
 * cdef class NoConstructor(Constructor):             # <<<<<<<<<<<<<<
 * 
 *     cpdef construct(self, dict fields):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoConstructor {
  PyObject *(*construct)(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoConstructor *__pyx_vtabptr_9apischema_15deserialization_7methods_NoConstructor;


/* "apischema/deserialization/methods.pyx":405
 *         self._dispatch = 0
 * 
 * cdef class RawConstructor(Constructor):             # <<<<<<<<<<<<<<
 * 
 *     cpdef construct(self, dict fields):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RawConstructor {
  PyObject *(*construct)(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RawConstructor *__pyx_vtabptr_9apischema_15deserialization_7methods_RawConstructor;


/* "apischema/deserialization/methods.pyx":430
 *         self.factory = factory
 * 
 * cdef class FieldsConstructor(Constructor):             # <<<<<<<<<<<<<<
 *     cdef readonly long nb_fields
 *     cdef readonly tuple default_fields
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FieldsConstructor {
  PyObject *(*construct)(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_vtabptr_9apischema_15deserialization_7methods_FieldsConstructor;


/* "apischema/deserialization/methods.pyx":445
 *         self._dispatch = 2
 * 
 * cdef class SimpleObjectMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple fields
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SimpleObjectMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_SimpleObjectMethod;


/* "apischema/deserialization/methods.pyx":465
 *         self._dispatch = 12
 * 
 * cdef class ObjectMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple constraints
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ObjectMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ObjectMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ObjectMethod;


/* "apischema/deserialization/methods.pyx":511
 *         self._dispatch = 13
 * 
 * cdef class NoneMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoneMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoneMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_NoneMethod;


/* "apischema/deserialization/methods.pyx":519
 *         self._dispatch = 14
 * 
 * cdef class IntMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_IntMethod;


/* "apischema/deserialization/methods.pyx":527
 *         self._dispatch = 15
 * 
 * cdef class FloatMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_FloatMethod;


/* "apischema/deserialization/methods.pyx":535
 *         self._dispatch = 17
 * 
 * cdef class StrMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_StrMethod;


/* "apischema/deserialization/methods.pyx":543
 *         self._dispatch = 19
 * 
 * cdef class BoolMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_BoolMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_BoolMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_BoolMethod;


/* "apischema/deserialization/methods.pyx":551
 *         self._dispatch = 21
 * 
 * cdef class ConstrainedIntMethod(IntMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedIntMethod {
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod __pyx_base;
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedIntMethod;


/* "apischema/deserialization/methods.pyx":561
 *         self._dispatch = 16
 * 
 * cdef class ConstrainedFloatMethod(FloatMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedFloatMethod {
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod __pyx_base;
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedFloatMethod;


/* "apischema/deserialization/methods.pyx":571
 *         self._dispatch = 18
 * 
 * cdef class ConstrainedStrMethod(StrMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedStrMethod {
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod __pyx_base;
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedStrMethod;


/* "apischema/deserialization/methods.pyx":581
 *         self._dispatch = 20
 * 
 * cdef class SubprimitiveMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly type cls
 *     cdef readonly DeserializationMethod method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SubprimitiveMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_SubprimitiveMethod;


/* "apischema/deserialization/methods.pyx":593
 *         self._dispatch = 22
 * 
 * cdef class TupleMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly object min_len_error
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TupleMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TupleMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_TupleMethod;


/* "apischema/deserialization/methods.pyx":609
 *         self._dispatch = 23
 * 
 * cdef class OptionalMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 *     cdef readonly object coercer
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_OptionalMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_OptionalMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_OptionalMethod;


/* "apischema/deserialization/methods.pyx":621
 *         self._dispatch = 24
 * 
 * cdef class UnionByTypeMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly dict method_by_cls
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionByTypeMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_UnionByTypeMethod;


/* "apischema/deserialization/methods.pyx":631
 *         self._dispatch = 25
 * 
 * cdef class UnionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple alt_methods
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_UnionMethod;


/* "apischema/deserialization/methods.pyx":641
 *         self._dispatch = 26
 * 
 * cdef class ConversionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConversionMethod;


/* "apischema/deserialization/methods.pyx":653
 *         self._dispatch = 27
 * 
 * cdef class ConversionWithValueErrorMethod(ConversionMethod):             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod {
  struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod __pyx_base;
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;


/* "apischema/deserialization/methods.pyx":673
 *         self.value_error = value_error
 * 
 * cdef class ConversionUnionMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly tuple alternatives
 * 
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionUnionMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_ConversionUnionMethod;


/* "apischema/deserialization/methods.pyx":683
 *         self._dispatch = 29
 * 
 * cdef class DiscriminatorMethod(DeserializationMethod):             # <<<<<<<<<<<<<<
 *     cdef readonly str alias
 *     cdef readonly dict mapping
 */

struct __pyx_vtabstruct_9apischema_15deserialization_7methods_DiscriminatorMethod {
  PyObject *(*deserialize)(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_vtabptr_9apischema_15deserialization_7methods_DiscriminatorMethod;

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
#define __Pyx_GetModuleGlobalNameUncached(var, name)  {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
#else
#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
#endif

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
#if CYTHON_FAST_PYCALL
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()\
    ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
     (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
  #define __Pyx_PyFrame_GetLocalsplus(frame)\
    (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif // CYTHON_FAST_PYCALL
#endif

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCall2Args.proto */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* KeywordStringCheck.proto */
static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);

/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* None.proto */
static CYTHON_INLINE long __Pyx_mod_long(long, long);

/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#else
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif

/* PyDictContains.proto */
static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    int result = PyDict_Contains(dict, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* PyObjectGetMethod.proto */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    (likely(is_tuple || PyTuple_Check(tuple)) ?\
        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* py_dict_keys.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;

/* CallUnboundCMethod0.proto */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CallUnboundCMethod0(cfunc, self)\
    (likely((cfunc)->func) ?\
        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
         (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
            (PY_VERSION_HEX >= 0x030700A0 ?\
                (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
                (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
          (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
            (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
            (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
               ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
               __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
        __Pyx__CallUnboundCMethod0(cfunc, self))
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* PyObjectFormatSimple.proto */
#if CYTHON_COMPILING_IN_PYPY
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#elif PY_MAJOR_VERSION < 3
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
        PyObject_Format(s, f))
#elif CYTHON_USE_TYPE_SLOTS
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\
        PyObject_Format(s, f))
#else
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#endif

/* IncludeStringH.proto */
#include <string.h>

/* JoinPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char);

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* CallUnboundCMethod1.proto */
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#else
#define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
#endif

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* HasAttr.proto */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);

/* CallNextTpTraverse.proto */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);

/* CallNextTpClear.proto */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);

/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif

/* PyObject_GenericGetAttr.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif

/* PyObjectGetAttrStrNoError.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* SetVTable.proto */
static int __Pyx_SetVtable(PyObject *dict, void *vtable);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* GCCDiagnostics.proto */
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* CoroutineBase.proto */
typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_ExcInfoStruct  _PyErr_StackItem
#else
typedef struct {
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
} __Pyx_ExcInfoStruct;
#endif
typedef struct {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    __Pyx_ExcInfoStruct gi_exc_state;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    PyObject *gi_code;
    PyObject *gi_frame;
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_Coroutine_SwapException(self)
#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
#else
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
    }
#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);

/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);

/* PatchGeneratorABC.proto */
static int __Pyx_patch_abc(void);

/* Generator.proto */
#define __Pyx_Generator_USED
static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(void);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

static PyObject *__pyx_f_9apischema_15deserialization_7methods_17MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13NoConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_14RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10NoneMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9IntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11FloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9StrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10BoolMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch); /* proto*/

/* Module declarations from 'cython' */

/* Module declarations from 'apischema.deserialization.methods' */
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_Constraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MinimumConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MaximumConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MultipleOfConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MinLengthConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MaxLengthConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_PatternConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MinItemsConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MaxItemsConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_UniqueItemsConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MinPropertiesConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MaxPropertiesConstraint = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_RecMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ValidatorMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_CoercerMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_TypeCheckMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_AnyMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ListCheckOnlyMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ListMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_SetMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_VariadicTupleMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_LiteralMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MappingCheckOnly = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_MappingMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_Field = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_FlattenedField = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_PatternField = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_AdditionalField = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_Constructor = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_NoConstructor = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_RawConstructor = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_DefaultField = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_FactoryField = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_FieldsConstructor = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_SimpleObjectMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ObjectMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_NoneMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_IntMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_StrMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_BoolMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedIntMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedFloatMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedStrMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_SubprimitiveMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_TupleMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_OptionalMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_UnionByTypeMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_UnionMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConversionMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConversionAlternative = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_ConversionUnionMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods_DiscriminatorMethod = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize = 0;
static PyTypeObject *__pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr = 0;
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_to_hashable(PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_format_error(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_validate_constraints(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_set_child_error(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_extend_errors(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_update_children_errors(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *, long); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *, long); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *, long); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *, long); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *, long); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UniqueItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_NoneMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_IntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_FloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_StrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_BoolMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_NoConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_Constraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_Constructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinimumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaximumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMinimumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMaximumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MultipleOfConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinLengthConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxLengthConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UniqueItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinPropertiesConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxPropertiesConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DeserializationMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RecMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ValidatorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_CoercerMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TypeCheckMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AnyMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListCheckOnlyMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SetMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_VariadicTupleMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_LiteralMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingCheckOnly__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Field__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Field *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FlattenedField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AdditionalField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RawConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DefaultField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FactoryField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FieldsConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SimpleObjectMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ObjectMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoneMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_IntMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FloatMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_StrMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_BoolMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedIntMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedFloatMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedStrMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SubprimitiveMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TupleMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_OptionalMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionByTypeMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionWithValueErrorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionAlternative__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionUnionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *, PyObject *); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DiscriminatorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *, PyObject *); /*proto*/
#define __Pyx_MODULE_NAME "apischema.deserialization.methods"
extern int __pyx_module_is_main_apischema__deserialization__methods;
int __pyx_module_is_main_apischema__deserialization__methods = 0;

/* Implementation of 'apischema.deserialization.methods' */
static PyObject *__pyx_builtin_map;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_IndexError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_object;
static const char __pyx_k_[] = ")";
static const char __pyx_k_Any[] = "Any";
static const char __pyx_k_cls[] = "cls";
static const char __pyx_k_err[] = "err";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_map[] = "map";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_Dict[] = "Dict";
static const char __pyx_k_Lazy[] = "Lazy";
static const char __pyx_k_List[] = "List";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_keys[] = "keys";
static const char __pyx_k_lazy[] = "lazy";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_Field[] = "Field";
static const char __pyx_k_Tuple[] = "Tuple";
static const char __pyx_k_Union[] = "Union";
static const char __pyx_k_alias[] = "alias";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_error[] = "error";
static const char __pyx_k_field[] = "field";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_match[] = "match";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_types[] = "types";
static const char __pyx_k_errors[] = "errors";
static const char __pyx_k_extend[] = "extend";
static const char __pyx_k_fields[] = "fields";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_method[] = "method";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_typing[] = "typing";
static const char __pyx_k_unique[] = "unique";
static const char __pyx_k_update[] = "update";
static const char __pyx_k_Aliaser[] = "Aliaser";
static const char __pyx_k_AnyType[] = "AnyType";
static const char __pyx_k_Coercer[] = "Coercer";
static const char __pyx_k_Mapping[] = "Mapping";
static const char __pyx_k_Pattern[] = "Pattern";
static const char __pyx_k_aliaser[] = "aliaser";
static const char __pyx_k_aliases[] = "aliases";
static const char __pyx_k_coercer[] = "coercer";
static const char __pyx_k_exc_max[] = "exc_max";
static const char __pyx_k_exc_min[] = "exc_min";
static const char __pyx_k_factory[] = "factory";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_mapping[] = "mapping";
static const char __pyx_k_max_len[] = "max_len";
static const char __pyx_k_maximum[] = "maximum";
static const char __pyx_k_min_len[] = "min_len";
static const char __pyx_k_minimum[] = "minimum";
static const char __pyx_k_missing[] = "missing";
static const char __pyx_k_mult_of[] = "mult_of";
static const char __pyx_k_pattern[] = "pattern";
static const char __pyx_k_Callable[] = "Callable";
static const char __pyx_k_ErrorKey[] = "ErrorKey";
static const char __pyx_k_ErrorMsg[] = "ErrorMsg";
static const char __pyx_k_KeyError[] = "KeyError";
static const char __pyx_k_NoneType[] = "NoneType";
static const char __pyx_k_Optional[] = "Optional";
static const char __pyx_k_Sequence[] = "Sequence";
static const char __pyx_k_bad_type[] = "bad_type";
static const char __pyx_k_children[] = "children";
static const char __pyx_k_expected[] = "expected";
static const char __pyx_k_fallback[] = "fallback";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_messages[] = "messages";
static const char __pyx_k_pyx_type[] = "__pyx_type";
static const char __pyx_k_required[] = "required";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_validate[] = "validate";
static const char __pyx_k_AnyMethod[] = "AnyMethod";
static const char __pyx_k_Converter[] = "Converter";
static const char __pyx_k_IntMethod[] = "IntMethod";
static const char __pyx_k_RecMethod[] = "RecMethod";
static const char __pyx_k_SetMethod[] = "SetMethod";
static const char __pyx_k_StrMethod[] = "StrMethod";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_Validator[] = "Validator";
static const char __pyx_k_construct[] = "construct";
static const char __pyx_k_converter[] = "converter";
static const char __pyx_k_dataclass[] = "dataclass";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_max_items[] = "max_items";
static const char __pyx_k_min_items[] = "min_items";
static const char __pyx_k_nb_fields[] = "nb_fields";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_value_map[] = "value_map";
static const char __pyx_k_BoolMethod[] = "BoolMethod";
static const char __pyx_k_Constraint[] = "Constraint";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_ListMethod[] = "ListMethod";
static const char __pyx_k_NoneMethod[] = "NoneMethod";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_isdisjoint[] = "isdisjoint";
static const char __pyx_k_key_method[] = "key_method";
static const char __pyx_k_pyx_result[] = "__pyx_result";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_typed_dict[] = "typed_dict";
static const char __pyx_k_unexpected[] = "unexpected";
static const char __pyx_k_validators[] = "validators";
static const char __pyx_k_AbstractSet[] = "AbstractSet";
static const char __pyx_k_Constructor[] = "Constructor";
static const char __pyx_k_FloatMethod[] = "FloatMethod";
static const char __pyx_k_PickleError[] = "PickleError";
static const char __pyx_k_TupleMethod[] = "TupleMethod";
static const char __pyx_k_UnionMethod[] = "UnionMethod";
static const char __pyx_k_all_aliases[] = "all_aliases";
static const char __pyx_k_alt_methods[] = "alt_methods";
static const char __pyx_k_constraints[] = "constraints";
static const char __pyx_k_constructor[] = "constructor";
static const char __pyx_k_dataclasses[] = "dataclasses";
static const char __pyx_k_deserialize[] = "deserialize";
static const char __pyx_k_elt_methods[] = "elt_methods";
static const char __pyx_k_required_by[] = "required_by";
static const char __pyx_k_to_hashable[] = "to_hashable";
static const char __pyx_k_value_error[] = "value_error";
static const char __pyx_k_DefaultField[] = "DefaultField";
static const char __pyx_k_FactoryField[] = "FactoryField";
static const char __pyx_k_ObjectMethod[] = "ObjectMethod";
static const char __pyx_k_PatternField[] = "PatternField";
static const char __pyx_k_alternatives[] = "alternatives";
static const char __pyx_k_dependencies[] = "dependencies";
static const char __pyx_k_merge_errors[] = "merge_errors";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_stringsource[] = "stringsource";
static const char __pyx_k_value_method[] = "value_method";
static const char __pyx_k_CoercerMethod[] = "CoercerMethod";
static const char __pyx_k_LiteralMethod[] = "LiteralMethod";
static const char __pyx_k_MappingMethod[] = "MappingMethod";
static const char __pyx_k_NoConstructor[] = "NoConstructor";
static const char __pyx_k_ValidatorMock[] = "ValidatorMock";
static const char __pyx_k_default_value[] = "default_value";
static const char __pyx_k_discriminator[] = "discriminator";
static const char __pyx_k_init_defaults[] = "init_defaults";
static const char __pyx_k_max_len_error[] = "max_len_error";
static const char __pyx_k_method_by_cls[] = "method_by_cls";
static const char __pyx_k_min_len_error[] = "min_len_error";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_required_by_2[] = " (required by ";
static const char __pyx_k_FlattenedField[] = "FlattenedField";
static const char __pyx_k_OptionalMethod[] = "OptionalMethod";
static const char __pyx_k_RawConstructor[] = "RawConstructor";
static const char __pyx_k_default_fields[] = "default_fields";
static const char __pyx_k_factory_fields[] = "factory_fields";
static const char __pyx_k_max_properties[] = "max_properties";
static const char __pyx_k_min_properties[] = "min_properties";
static const char __pyx_k_pattern_fields[] = "pattern_fields";
static const char __pyx_k_AdditionalField[] = "AdditionalField";
static const char __pyx_k_TypeCheckMethod[] = "TypeCheckMethod";
static const char __pyx_k_ValidationError[] = "ValidationError";
static const char __pyx_k_ValidatorMethod[] = "ValidatorMethod";
static const char __pyx_k_apischema_types[] = "apischema.types";
static const char __pyx_k_apischema_utils[] = "apischema.utils";
static const char __pyx_k_children_errors[] = "children_errors";
static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_ConversionMethod[] = "ConversionMethod";
static const char __pyx_k_MappingCheckOnly[] = "MappingCheckOnly";
static const char __pyx_k_additional_field[] = "additional_field";
static const char __pyx_k_flattened_fields[] = "flattened_fields";
static const char __pyx_k_FieldsConstructor[] = "FieldsConstructor";
static const char __pyx_k_MaximumConstraint[] = "MaximumConstraint";
static const char __pyx_k_MinimumConstraint[] = "MinimumConstraint";
static const char __pyx_k_PatternConstraint[] = "PatternConstraint";
static const char __pyx_k_UnionByTypeMethod[] = "UnionByTypeMethod";
static const char __pyx_k_apischema_aliases[] = "apischema.aliases";
static const char __pyx_k_difference_update[] = "difference_update";
static const char __pyx_k_MaxItemsConstraint[] = "MaxItemsConstraint";
static const char __pyx_k_MinItemsConstraint[] = "MinItemsConstraint";
static const char __pyx_k_SimpleObjectMethod[] = "SimpleObjectMethod";
static const char __pyx_k_SubprimitiveMethod[] = "SubprimitiveMethod";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_post_init_modified[] = "post_init_modified";
static const char __pyx_k_pyx_unpickle_Field[] = "__pyx_unpickle_Field";
static const char __pyx_k_DiscriminatorMethod[] = "DiscriminatorMethod";
static const char __pyx_k_ListCheckOnlyMethod[] = "ListCheckOnlyMethod";
static const char __pyx_k_MaxLengthConstraint[] = "MaxLengthConstraint";
static const char __pyx_k_MinLengthConstraint[] = "MinLengthConstraint";
static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
static const char __pyx_k_VariadicTupleMethod[] = "VariadicTupleMethod";
static const char __pyx_k_ConstrainedIntMethod[] = "ConstrainedIntMethod";
static const char __pyx_k_ConstrainedStrMethod[] = "ConstrainedStrMethod";
static const char __pyx_k_MultipleOfConstraint[] = "MultipleOfConstraint";
static const char __pyx_k_fall_back_on_default[] = "fall_back_on_default";
static const char __pyx_k_ConversionAlternative[] = "ConversionAlternative";
static const char __pyx_k_ConversionUnionMethod[] = "ConversionUnionMethod";
static const char __pyx_k_DeserializationMethod[] = "DeserializationMethod";
static const char __pyx_k_UniqueItemsConstraint[] = "UniqueItemsConstraint";
static const char __pyx_k_additional_properties[] = "additional_properties";
static const char __pyx_k_ConstrainedFloatMethod[] = "ConstrainedFloatMethod";
static const char __pyx_k_pyx_unpickle_AnyMethod[] = "__pyx_unpickle_AnyMethod";
static const char __pyx_k_pyx_unpickle_IntMethod[] = "__pyx_unpickle_IntMethod";
static const char __pyx_k_pyx_unpickle_RecMethod[] = "__pyx_unpickle_RecMethod";
static const char __pyx_k_pyx_unpickle_SetMethod[] = "__pyx_unpickle_SetMethod";
static const char __pyx_k_pyx_unpickle_StrMethod[] = "__pyx_unpickle_StrMethod";
static const char __pyx_k_MaxPropertiesConstraint[] = "MaxPropertiesConstraint";
static const char __pyx_k_MinPropertiesConstraint[] = "MinPropertiesConstraint";
static const char __pyx_k_pyx_unpickle_BoolMethod[] = "__pyx_unpickle_BoolMethod";
static const char __pyx_k_pyx_unpickle_Constraint[] = "__pyx_unpickle_Constraint";
static const char __pyx_k_pyx_unpickle_ListMethod[] = "__pyx_unpickle_ListMethod";
static const char __pyx_k_pyx_unpickle_NoneMethod[] = "__pyx_unpickle_NoneMethod";
static const char __pyx_k_pyx_unpickle_Constructor[] = "__pyx_unpickle_Constructor";
static const char __pyx_k_pyx_unpickle_FloatMethod[] = "__pyx_unpickle_FloatMethod";
static const char __pyx_k_pyx_unpickle_TupleMethod[] = "__pyx_unpickle_TupleMethod";
static const char __pyx_k_pyx_unpickle_UnionMethod[] = "__pyx_unpickle_UnionMethod";
static const char __pyx_k_apischema_validation_mock[] = "apischema.validation.mock";
static const char __pyx_k_pyx_unpickle_DefaultField[] = "__pyx_unpickle_DefaultField";
static const char __pyx_k_pyx_unpickle_FactoryField[] = "__pyx_unpickle_FactoryField";
static const char __pyx_k_pyx_unpickle_ObjectMethod[] = "__pyx_unpickle_ObjectMethod";
static const char __pyx_k_pyx_unpickle_PatternField[] = "__pyx_unpickle_PatternField";
static const char __pyx_k_ExclusiveMaximumConstraint[] = "ExclusiveMaximumConstraint";
static const char __pyx_k_ExclusiveMinimumConstraint[] = "ExclusiveMinimumConstraint";
static const char __pyx_k_pyx_unpickle_CoercerMethod[] = "__pyx_unpickle_CoercerMethod";
static const char __pyx_k_pyx_unpickle_LiteralMethod[] = "__pyx_unpickle_LiteralMethod";
static const char __pyx_k_pyx_unpickle_MappingMethod[] = "__pyx_unpickle_MappingMethod";
static const char __pyx_k_pyx_unpickle_NoConstructor[] = "__pyx_unpickle_NoConstructor";
static const char __pyx_k_apischema_conversions_utils[] = "apischema.conversions.utils";
static const char __pyx_k_apischema_json_schema_types[] = "apischema.json_schema.types";
static const char __pyx_k_apischema_validation_errors[] = "apischema.validation.errors";
static const char __pyx_k_pyx_unpickle_FlattenedField[] = "__pyx_unpickle_FlattenedField";
static const char __pyx_k_pyx_unpickle_OptionalMethod[] = "__pyx_unpickle_OptionalMethod";
static const char __pyx_k_pyx_unpickle_RawConstructor[] = "__pyx_unpickle_RawConstructor";
static const char __pyx_k_pyx_unpickle_AdditionalField[] = "__pyx_unpickle_AdditionalField";
static const char __pyx_k_pyx_unpickle_TypeCheckMethod[] = "__pyx_unpickle_TypeCheckMethod";
static const char __pyx_k_pyx_unpickle_ValidatorMethod[] = "__pyx_unpickle_ValidatorMethod";
static const char __pyx_k_pyx_unpickle_ConversionMethod[] = "__pyx_unpickle_ConversionMethod";
static const char __pyx_k_pyx_unpickle_MappingCheckOnly[] = "__pyx_unpickle_MappingCheckOnly";
static const char __pyx_k_ConversionWithValueErrorMethod[] = "ConversionWithValueErrorMethod";
static const char __pyx_k_pyx_unpickle_ConstrainedFloatM[] = "__pyx_unpickle_ConstrainedFloatMethod";
static const char __pyx_k_pyx_unpickle_ConstrainedIntMet[] = "__pyx_unpickle_ConstrainedIntMethod";
static const char __pyx_k_pyx_unpickle_ConstrainedStrMet[] = "__pyx_unpickle_ConstrainedStrMethod";
static const char __pyx_k_pyx_unpickle_ConversionAlterna[] = "__pyx_unpickle_ConversionAlternative";
static const char __pyx_k_pyx_unpickle_ConversionUnionMe[] = "__pyx_unpickle_ConversionUnionMethod";
static const char __pyx_k_pyx_unpickle_ConversionWithVal[] = "__pyx_unpickle_ConversionWithValueErrorMethod";
static const char __pyx_k_pyx_unpickle_DeserializationMe[] = "__pyx_unpickle_DeserializationMethod";
static const char __pyx_k_pyx_unpickle_DiscriminatorMeth[] = "__pyx_unpickle_DiscriminatorMethod";
static const char __pyx_k_pyx_unpickle_ExclusiveMaximumC[] = "__pyx_unpickle_ExclusiveMaximumConstraint";
static const char __pyx_k_pyx_unpickle_ExclusiveMinimumC[] = "__pyx_unpickle_ExclusiveMinimumConstraint";
static const char __pyx_k_pyx_unpickle_FieldsConstructor[] = "__pyx_unpickle_FieldsConstructor";
static const char __pyx_k_pyx_unpickle_ListCheckOnlyMeth[] = "__pyx_unpickle_ListCheckOnlyMethod";
static const char __pyx_k_pyx_unpickle_MaxItemsConstrain[] = "__pyx_unpickle_MaxItemsConstraint";
static const char __pyx_k_pyx_unpickle_MaxLengthConstrai[] = "__pyx_unpickle_MaxLengthConstraint";
static const char __pyx_k_pyx_unpickle_MaxPropertiesCons[] = "__pyx_unpickle_MaxPropertiesConstraint";
static const char __pyx_k_pyx_unpickle_MaximumConstraint[] = "__pyx_unpickle_MaximumConstraint";
static const char __pyx_k_pyx_unpickle_MinItemsConstrain[] = "__pyx_unpickle_MinItemsConstraint";
static const char __pyx_k_pyx_unpickle_MinLengthConstrai[] = "__pyx_unpickle_MinLengthConstraint";
static const char __pyx_k_pyx_unpickle_MinPropertiesCons[] = "__pyx_unpickle_MinPropertiesConstraint";
static const char __pyx_k_pyx_unpickle_MinimumConstraint[] = "__pyx_unpickle_MinimumConstraint";
static const char __pyx_k_pyx_unpickle_MultipleOfConstra[] = "__pyx_unpickle_MultipleOfConstraint";
static const char __pyx_k_pyx_unpickle_PatternConstraint[] = "__pyx_unpickle_PatternConstraint";
static const char __pyx_k_pyx_unpickle_SimpleObjectMetho[] = "__pyx_unpickle_SimpleObjectMethod";
static const char __pyx_k_pyx_unpickle_SubprimitiveMetho[] = "__pyx_unpickle_SubprimitiveMethod";
static const char __pyx_k_pyx_unpickle_UnionByTypeMethod[] = "__pyx_unpickle_UnionByTypeMethod";
static const char __pyx_k_pyx_unpickle_UniqueItemsConstr[] = "__pyx_unpickle_UniqueItemsConstraint";
static const char __pyx_k_pyx_unpickle_VariadicTupleMeth[] = "__pyx_unpickle_VariadicTupleMethod";
static const char __pyx_k_apischema_validation_validators[] = "apischema.validation.validators";
static const char __pyx_k_Incompatible_checksums_s_vs_0x05[] = "Incompatible checksums (%s vs 0x05289b3 = (_dispatch))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x0a[] = "Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x1c[] = "Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x1d[] = "Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x29[] = "Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x30[] = "Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x40[] = "Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x4c[] = "Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x52[] = "Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x53[] = "Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x54[] = "Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x55[] = "Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x60[] = "Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x64[] = "Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x67[] = "Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x68[] = "Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x69[] = "Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x71[] = "Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x72[] = "Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x7a[] = "Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x7b[] = "Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x83[] = "Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x86[] = "Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x90[] = "Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x92[] = "Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x97[] = "Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xa6[] = "Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xaa[] = "Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xb3[] = "Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xc8[] = "Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xcf[] = "Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xd1[] = "Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xd9[] = "Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xe6[] = "Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xe7[] = "Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xef[] = "Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xf6[] = "Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xf9[] = "Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xfa[] = "Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xfe[] = "Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))";
static const char __pyx_k_UnionByTypeMethod_deserialize_lo[] = "UnionByTypeMethod_deserialize.<locals>.genexpr";
static const char __pyx_k_apischema_deserialization_coerci[] = "apischema.deserialization.coercion";
static const char __pyx_k_apischema_deserialization_method[] = "apischema.deserialization.methods";
static const char __pyx_k_Incompatible_checksums_s_vs_0x55_2[] = "Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))";
static const char __pyx_k_Incompatible_checksums_s_vs_0x72_2[] = "Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))";
static PyObject *__pyx_kp_u_;
static PyObject *__pyx_n_s_AbstractSet;
static PyObject *__pyx_n_s_AdditionalField;
static PyObject *__pyx_n_s_Aliaser;
static PyObject *__pyx_n_s_Any;
static PyObject *__pyx_n_s_AnyMethod;
static PyObject *__pyx_n_s_AnyType;
static PyObject *__pyx_n_s_BoolMethod;
static PyObject *__pyx_n_s_Callable;
static PyObject *__pyx_n_s_Coercer;
static PyObject *__pyx_n_s_CoercerMethod;
static PyObject *__pyx_n_s_ConstrainedFloatMethod;
static PyObject *__pyx_n_s_ConstrainedIntMethod;
static PyObject *__pyx_n_s_ConstrainedStrMethod;
static PyObject *__pyx_n_s_Constraint;
static PyObject *__pyx_n_s_Constructor;
static PyObject *__pyx_n_s_ConversionAlternative;
static PyObject *__pyx_n_s_ConversionMethod;
static PyObject *__pyx_n_s_ConversionUnionMethod;
static PyObject *__pyx_n_s_ConversionWithValueErrorMethod;
static PyObject *__pyx_n_s_Converter;
static PyObject *__pyx_n_s_DefaultField;
static PyObject *__pyx_n_s_DeserializationMethod;
static PyObject *__pyx_n_s_Dict;
static PyObject *__pyx_n_s_DiscriminatorMethod;
static PyObject *__pyx_n_s_ErrorKey;
static PyObject *__pyx_n_s_ErrorMsg;
static PyObject *__pyx_n_s_ExclusiveMaximumConstraint;
static PyObject *__pyx_n_s_ExclusiveMinimumConstraint;
static PyObject *__pyx_n_s_FactoryField;
static PyObject *__pyx_n_s_Field;
static PyObject *__pyx_n_s_FieldsConstructor;
static PyObject *__pyx_n_s_FlattenedField;
static PyObject *__pyx_n_s_FloatMethod;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x05;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x0a;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x1c;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x1d;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x29;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x30;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x40;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x4c;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x52;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x53;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x54;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x55;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x55_2;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x60;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x64;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x67;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x68;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x69;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x71;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x72;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x72_2;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x7a;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x7b;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x83;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x86;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x90;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x92;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x97;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xa6;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xaa;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb3;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xc8;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xcf;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd1;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd9;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xe6;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xe7;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xef;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xf6;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xf9;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xfa;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xfe;
static PyObject *__pyx_n_s_IndexError;
static PyObject *__pyx_n_s_IntMethod;
static PyObject *__pyx_n_s_KeyError;
static PyObject *__pyx_n_s_Lazy;
static PyObject *__pyx_n_s_List;
static PyObject *__pyx_n_s_ListCheckOnlyMethod;
static PyObject *__pyx_n_s_ListMethod;
static PyObject *__pyx_n_s_LiteralMethod;
static PyObject *__pyx_n_s_Mapping;
static PyObject *__pyx_n_s_MappingCheckOnly;
static PyObject *__pyx_n_s_MappingMethod;
static PyObject *__pyx_n_s_MaxItemsConstraint;
static PyObject *__pyx_n_s_MaxLengthConstraint;
static PyObject *__pyx_n_s_MaxPropertiesConstraint;
static PyObject *__pyx_n_s_MaximumConstraint;
static PyObject *__pyx_n_s_MinItemsConstraint;
static PyObject *__pyx_n_s_MinLengthConstraint;
static PyObject *__pyx_n_s_MinPropertiesConstraint;
static PyObject *__pyx_n_s_MinimumConstraint;
static PyObject *__pyx_n_s_MultipleOfConstraint;
static PyObject *__pyx_n_s_NoConstructor;
static PyObject *__pyx_n_s_NoneMethod;
static PyObject *__pyx_n_s_NoneType;
static PyObject *__pyx_n_s_NotImplementedError;
static PyObject *__pyx_n_s_ObjectMethod;
static PyObject *__pyx_n_s_Optional;
static PyObject *__pyx_n_s_OptionalMethod;
static PyObject *__pyx_n_s_Pattern;
static PyObject *__pyx_n_s_PatternConstraint;
static PyObject *__pyx_n_s_PatternField;
static PyObject *__pyx_n_s_PickleError;
static PyObject *__pyx_n_s_RawConstructor;
static PyObject *__pyx_n_s_RecMethod;
static PyObject *__pyx_n_s_Sequence;
static PyObject *__pyx_n_s_SetMethod;
static PyObject *__pyx_n_s_SimpleObjectMethod;
static PyObject *__pyx_n_s_StrMethod;
static PyObject *__pyx_n_s_SubprimitiveMethod;
static PyObject *__pyx_n_s_Tuple;
static PyObject *__pyx_n_s_TupleMethod;
static PyObject *__pyx_n_s_TypeCheckMethod;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_n_s_Union;
static PyObject *__pyx_n_s_UnionByTypeMethod;
static PyObject *__pyx_n_s_UnionByTypeMethod_deserialize_lo;
static PyObject *__pyx_n_s_UnionMethod;
static PyObject *__pyx_n_s_UniqueItemsConstraint;
static PyObject *__pyx_n_s_ValidationError;
static PyObject *__pyx_n_s_Validator;
static PyObject *__pyx_n_s_ValidatorMethod;
static PyObject *__pyx_n_s_ValidatorMock;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_VariadicTupleMethod;
static PyObject *__pyx_n_s_additional_field;
static PyObject *__pyx_n_s_additional_properties;
static PyObject *__pyx_n_s_alias;
static PyObject *__pyx_n_s_aliaser;
static PyObject *__pyx_n_s_aliases;
static PyObject *__pyx_n_s_all_aliases;
static PyObject *__pyx_n_s_alt_methods;
static PyObject *__pyx_n_s_alternatives;
static PyObject *__pyx_n_s_apischema_aliases;
static PyObject *__pyx_n_s_apischema_conversions_utils;
static PyObject *__pyx_n_s_apischema_deserialization_coerci;
static PyObject *__pyx_n_s_apischema_deserialization_method;
static PyObject *__pyx_n_s_apischema_json_schema_types;
static PyObject *__pyx_n_s_apischema_types;
static PyObject *__pyx_n_s_apischema_utils;
static PyObject *__pyx_n_s_apischema_validation_errors;
static PyObject *__pyx_n_s_apischema_validation_mock;
static PyObject *__pyx_n_s_apischema_validation_validators;
static PyObject *__pyx_n_s_args;
static PyObject *__pyx_n_s_bad_type;
static PyObject *__pyx_n_s_children;
static PyObject *__pyx_n_s_children_errors;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_close;
static PyObject *__pyx_n_s_cls;
static PyObject *__pyx_n_s_coercer;
static PyObject *__pyx_n_s_constraints;
static PyObject *__pyx_n_s_construct;
static PyObject *__pyx_n_s_constructor;
static PyObject *__pyx_n_s_converter;
static PyObject *__pyx_n_s_data;
static PyObject *__pyx_n_s_dataclass;
static PyObject *__pyx_n_s_dataclasses;
static PyObject *__pyx_n_s_default_fields;
static PyObject *__pyx_n_s_default_value;
static PyObject *__pyx_n_s_dependencies;
static PyObject *__pyx_n_s_deserialize;
static PyObject *__pyx_n_s_dict;
static PyObject *__pyx_n_s_difference_update;
static PyObject *__pyx_n_s_discriminator;
static PyObject *__pyx_n_s_elt_methods;
static PyObject *__pyx_n_s_enumerate;
static PyObject *__pyx_n_s_err;
static PyObject *__pyx_n_s_error;
static PyObject *__pyx_n_s_errors;
static PyObject *__pyx_n_s_exc_max;
static PyObject *__pyx_n_s_exc_min;
static PyObject *__pyx_n_s_expected;
static PyObject *__pyx_n_s_extend;
static PyObject *__pyx_n_s_factory;
static PyObject *__pyx_n_s_factory_fields;
static PyObject *__pyx_n_s_fall_back_on_default;
static PyObject *__pyx_n_s_fallback;
static PyObject *__pyx_n_s_field;
static PyObject *__pyx_n_s_fields;
static PyObject *__pyx_n_s_flattened_fields;
static PyObject *__pyx_n_s_genexpr;
static PyObject *__pyx_n_s_getstate;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_n_s_init_defaults;
static PyObject *__pyx_n_s_isdisjoint;
static PyObject *__pyx_n_s_items;
static PyObject *__pyx_n_s_key;
static PyObject *__pyx_n_s_key_method;
static PyObject *__pyx_n_s_keys;
static PyObject *__pyx_n_s_lazy;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_map;
static PyObject *__pyx_n_s_mapping;
static PyObject *__pyx_n_s_match;
static PyObject *__pyx_n_s_max_items;
static PyObject *__pyx_n_s_max_len;
static PyObject *__pyx_n_s_max_len_error;
static PyObject *__pyx_n_s_max_properties;
static PyObject *__pyx_n_s_maximum;
static PyObject *__pyx_n_s_merge_errors;
static PyObject *__pyx_n_s_messages;
static PyObject *__pyx_n_s_method;
static PyObject *__pyx_n_s_method_by_cls;
static PyObject *__pyx_n_s_min_items;
static PyObject *__pyx_n_s_min_len;
static PyObject *__pyx_n_s_min_len_error;
static PyObject *__pyx_n_s_min_properties;
static PyObject *__pyx_n_s_minimum;
static PyObject *__pyx_n_s_missing;
static PyObject *__pyx_n_s_mult_of;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_n_s_nb_fields;
static PyObject *__pyx_n_s_new;
static PyObject *__pyx_n_s_object;
static PyObject *__pyx_n_s_pattern;
static PyObject *__pyx_n_s_pattern_fields;
static PyObject *__pyx_n_s_pickle;
static PyObject *__pyx_n_s_post_init_modified;
static PyObject *__pyx_n_s_pyx_PickleError;
static PyObject *__pyx_n_s_pyx_checksum;
static PyObject *__pyx_n_s_pyx_result;
static PyObject *__pyx_n_s_pyx_state;
static PyObject *__pyx_n_s_pyx_type;
static PyObject *__pyx_n_s_pyx_unpickle_AdditionalField;
static PyObject *__pyx_n_s_pyx_unpickle_AnyMethod;
static PyObject *__pyx_n_s_pyx_unpickle_BoolMethod;
static PyObject *__pyx_n_s_pyx_unpickle_CoercerMethod;
static PyObject *__pyx_n_s_pyx_unpickle_ConstrainedFloatM;
static PyObject *__pyx_n_s_pyx_unpickle_ConstrainedIntMet;
static PyObject *__pyx_n_s_pyx_unpickle_ConstrainedStrMet;
static PyObject *__pyx_n_s_pyx_unpickle_Constraint;
static PyObject *__pyx_n_s_pyx_unpickle_Constructor;
static PyObject *__pyx_n_s_pyx_unpickle_ConversionAlterna;
static PyObject *__pyx_n_s_pyx_unpickle_ConversionMethod;
static PyObject *__pyx_n_s_pyx_unpickle_ConversionUnionMe;
static PyObject *__pyx_n_s_pyx_unpickle_ConversionWithVal;
static PyObject *__pyx_n_s_pyx_unpickle_DefaultField;
static PyObject *__pyx_n_s_pyx_unpickle_DeserializationMe;
static PyObject *__pyx_n_s_pyx_unpickle_DiscriminatorMeth;
static PyObject *__pyx_n_s_pyx_unpickle_ExclusiveMaximumC;
static PyObject *__pyx_n_s_pyx_unpickle_ExclusiveMinimumC;
static PyObject *__pyx_n_s_pyx_unpickle_FactoryField;
static PyObject *__pyx_n_s_pyx_unpickle_Field;
static PyObject *__pyx_n_s_pyx_unpickle_FieldsConstructor;
static PyObject *__pyx_n_s_pyx_unpickle_FlattenedField;
static PyObject *__pyx_n_s_pyx_unpickle_FloatMethod;
static PyObject *__pyx_n_s_pyx_unpickle_IntMethod;
static PyObject *__pyx_n_s_pyx_unpickle_ListCheckOnlyMeth;
static PyObject *__pyx_n_s_pyx_unpickle_ListMethod;
static PyObject *__pyx_n_s_pyx_unpickle_LiteralMethod;
static PyObject *__pyx_n_s_pyx_unpickle_MappingCheckOnly;
static PyObject *__pyx_n_s_pyx_unpickle_MappingMethod;
static PyObject *__pyx_n_s_pyx_unpickle_MaxItemsConstrain;
static PyObject *__pyx_n_s_pyx_unpickle_MaxLengthConstrai;
static PyObject *__pyx_n_s_pyx_unpickle_MaxPropertiesCons;
static PyObject *__pyx_n_s_pyx_unpickle_MaximumConstraint;
static PyObject *__pyx_n_s_pyx_unpickle_MinItemsConstrain;
static PyObject *__pyx_n_s_pyx_unpickle_MinLengthConstrai;
static PyObject *__pyx_n_s_pyx_unpickle_MinPropertiesCons;
static PyObject *__pyx_n_s_pyx_unpickle_MinimumConstraint;
static PyObject *__pyx_n_s_pyx_unpickle_MultipleOfConstra;
static PyObject *__pyx_n_s_pyx_unpickle_NoConstructor;
static PyObject *__pyx_n_s_pyx_unpickle_NoneMethod;
static PyObject *__pyx_n_s_pyx_unpickle_ObjectMethod;
static PyObject *__pyx_n_s_pyx_unpickle_OptionalMethod;
static PyObject *__pyx_n_s_pyx_unpickle_PatternConstraint;
static PyObject *__pyx_n_s_pyx_unpickle_PatternField;
static PyObject *__pyx_n_s_pyx_unpickle_RawConstructor;
static PyObject *__pyx_n_s_pyx_unpickle_RecMethod;
static PyObject *__pyx_n_s_pyx_unpickle_SetMethod;
static PyObject *__pyx_n_s_pyx_unpickle_SimpleObjectMetho;
static PyObject *__pyx_n_s_pyx_unpickle_StrMethod;
static PyObject *__pyx_n_s_pyx_unpickle_SubprimitiveMetho;
static PyObject *__pyx_n_s_pyx_unpickle_TupleMethod;
static PyObject *__pyx_n_s_pyx_unpickle_TypeCheckMethod;
static PyObject *__pyx_n_s_pyx_unpickle_UnionByTypeMethod;
static PyObject *__pyx_n_s_pyx_unpickle_UnionMethod;
static PyObject *__pyx_n_s_pyx_unpickle_UniqueItemsConstr;
static PyObject *__pyx_n_s_pyx_unpickle_ValidatorMethod;
static PyObject *__pyx_n_s_pyx_unpickle_VariadicTupleMeth;
static PyObject *__pyx_n_s_pyx_vtable;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_reduce_cython;
static PyObject *__pyx_n_s_reduce_ex;
static PyObject *__pyx_n_s_required;
static PyObject *__pyx_n_s_required_by;
static PyObject *__pyx_kp_u_required_by_2;
static PyObject *__pyx_n_s_send;
static PyObject *__pyx_n_s_setstate;
static PyObject *__pyx_n_s_setstate_cython;
static PyObject *__pyx_kp_s_stringsource;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_n_s_throw;
static PyObject *__pyx_n_s_to_hashable;
static PyObject *__pyx_n_s_typed_dict;
static PyObject *__pyx_n_s_types;
static PyObject *__pyx_n_s_typing;
static PyObject *__pyx_n_s_unexpected;
static PyObject *__pyx_n_s_unique;
static PyObject *__pyx_n_s_update;
static PyObject *__pyx_n_s_validate;
static PyObject *__pyx_n_s_validators;
static PyObject *__pyx_n_s_value_error;
static PyObject *__pyx_n_s_value_map;
static PyObject *__pyx_n_s_value_method;
static int __pyx_pf_9apischema_15deserialization_7methods_10Constraint___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self, PyObject *__pyx_v_error); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_minimum); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_maximum); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_exc_min); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_exc_max); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_mult_of); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_len); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_len); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_pattern); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_7pattern___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_items); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_items); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_unique); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_properties); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_properties); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod___reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod_2__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_lazy); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4lazy___get__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_validators, PyObject *__pyx_v_aliaser); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_10validators___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_coercer, PyObject *__pyx_v_cls, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_expected, PyObject *__pyx_v_fallback); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_constraints); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_value_map, PyObject *__pyx_v_error, PyObject *__pyx_v_coercer, PyObject *__pyx_v_types); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_9value_map___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5types___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_key_method, PyObject *__pyx_v_value_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_key_method, PyObject *__pyx_v_value_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_10key_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_5Field___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_alias, PyObject *__pyx_v_method, PyObject *__pyx_v_required, PyObject *__pyx_v_required_by, PyObject *__pyx_v_fall_back_on_default); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_5alias___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_8required___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_11required_by___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_aliases, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_7aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_12PatternField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_pattern, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_7pattern___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_11Constructor___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self, PyObject *__pyx_v_cls); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_fields); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_cls); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_fields); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_cls); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_12DefaultField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default_value); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_13default_value___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_12FactoryField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_factory); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_7factory___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_fields); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_nb_fields, PyObject *__pyx_v_default_fields, PyObject *__pyx_v_factory_fields); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_constructor, PyObject *__pyx_v_fields, PyObject *__pyx_v_all_aliases, PyObject *__pyx_v_typed_dict, PyObject *__pyx_v_missing, PyObject *__pyx_v_unexpected); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_constructor, PyObject *__pyx_v_constraints, PyObject *__pyx_v_fields, PyObject *__pyx_v_flattened_fields, PyObject *__pyx_v_pattern_fields, PyObject *__pyx_v_additional_field, PyObject *__pyx_v_all_aliases, PyObject *__pyx_v_additional_properties, PyObject *__pyx_v_typed_dict, PyObject *__pyx_v_validators, PyObject *__pyx_v_init_defaults, PyObject *__pyx_v_post_init_modified, PyObject *__pyx_v_aliaser, PyObject *__pyx_v_missing, PyObject *__pyx_v_unexpected, PyObject *__pyx_v_discriminator); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constructor___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10validators___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_constraints); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_constraints); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_constraints); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_min_len_error, PyObject *__pyx_v_max_len_error, PyObject *__pyx_v_elt_methods); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_value_method, PyObject *__pyx_v_coercer); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_method_by_cls); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_alt_methods); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_9converter___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative___init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method, PyObject *__pyx_v_value_error); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_9converter___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_alternatives); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_alias, PyObject *__pyx_v_mapping, PyObject *__pyx_v_missing, PyObject *__pyx_v_error); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_to_hashable(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_2format_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_err, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_4validate_constraints(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_constraints, PyObject *__pyx_v_children_errors); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_6set_child_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_key, PyObject *__pyx_v_error); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_8extend_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_messages); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10update_children_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_children); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12__pyx_unpickle_Constraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14__pyx_unpickle_MinimumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16__pyx_unpickle_MaximumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18__pyx_unpickle_ExclusiveMinimumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20__pyx_unpickle_ExclusiveMaximumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22__pyx_unpickle_MultipleOfConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_24__pyx_unpickle_MinLengthConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26__pyx_unpickle_MaxLengthConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_28__pyx_unpickle_PatternConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30__pyx_unpickle_MinItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_32__pyx_unpickle_MaxItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_34__pyx_unpickle_UniqueItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_36__pyx_unpickle_MinPropertiesConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_38__pyx_unpickle_MaxPropertiesConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_40__pyx_unpickle_DeserializationMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_42__pyx_unpickle_RecMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_44__pyx_unpickle_ValidatorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_46__pyx_unpickle_CoercerMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_48__pyx_unpickle_TypeCheckMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_50__pyx_unpickle_AnyMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_52__pyx_unpickle_ListCheckOnlyMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_54__pyx_unpickle_ListMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_56__pyx_unpickle_SetMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_58__pyx_unpickle_VariadicTupleMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_60__pyx_unpickle_LiteralMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_62__pyx_unpickle_MappingCheckOnly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_64__pyx_unpickle_MappingMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_66__pyx_unpickle_Field(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_68__pyx_unpickle_FlattenedField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_70__pyx_unpickle_PatternField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_72__pyx_unpickle_AdditionalField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_74__pyx_unpickle_Constructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_76__pyx_unpickle_NoConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_78__pyx_unpickle_RawConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_80__pyx_unpickle_DefaultField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_82__pyx_unpickle_FactoryField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_84__pyx_unpickle_FieldsConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_86__pyx_unpickle_SimpleObjectMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_88__pyx_unpickle_ObjectMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_90__pyx_unpickle_NoneMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_92__pyx_unpickle_IntMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_94__pyx_unpickle_FloatMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_96__pyx_unpickle_StrMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_98__pyx_unpickle_BoolMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_100__pyx_unpickle_ConstrainedIntMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_102__pyx_unpickle_ConstrainedFloatMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_104__pyx_unpickle_ConstrainedStrMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_106__pyx_unpickle_SubprimitiveMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_108__pyx_unpickle_TupleMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_110__pyx_unpickle_OptionalMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_112__pyx_unpickle_UnionByTypeMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_114__pyx_unpickle_UnionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_116__pyx_unpickle_ConversionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_118__pyx_unpickle_ConversionWithValueErrorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_120__pyx_unpickle_ConversionAlternative(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_122__pyx_unpickle_ConversionUnionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_9apischema_15deserialization_7methods_124__pyx_unpickle_DiscriminatorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Constraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinimumConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaximumConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MultipleOfConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinLengthConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxLengthConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_PatternConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UniqueItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinPropertiesConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxPropertiesConstraint(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_RecMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ValidatorMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_CoercerMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_TypeCheckMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_AnyMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ListCheckOnlyMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ListMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SetMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_VariadicTupleMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_LiteralMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MappingCheckOnly(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MappingMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Field(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FlattenedField(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_PatternField(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_AdditionalField(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Constructor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_NoConstructor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_RawConstructor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DefaultField(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FactoryField(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FieldsConstructor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SimpleObjectMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ObjectMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_NoneMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_IntMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FloatMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_StrMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_BoolMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedIntMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedFloatMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedStrMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SubprimitiveMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_TupleMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_OptionalMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UnionByTypeMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UnionMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionAlternative(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionUnionMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DiscriminatorMethod(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, &__pyx_n_s_keys, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_update = {0, &__pyx_n_s_update, 0, 0, 0};
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_5409203;
static PyObject *__pyx_int_10534196;
static PyObject *__pyx_int_30346496;
static PyObject *__pyx_int_31099836;
static PyObject *__pyx_int_43145208;
static PyObject *__pyx_int_50548289;
static PyObject *__pyx_int_67187364;
static PyObject *__pyx_int_79953799;
static PyObject *__pyx_int_86498115;
static PyObject *__pyx_int_87055098;
static PyObject *__pyx_int_89106541;
static PyObject *__pyx_int_89247923;
static PyObject *__pyx_int_89365892;
static PyObject *__pyx_int_100986846;
static PyObject *__pyx_int_105653666;
static PyObject *__pyx_int_108544010;
static PyObject *__pyx_int_109504843;
static PyObject *__pyx_int_110427570;
static PyObject *__pyx_int_119135242;
static PyObject *__pyx_int_119633667;
static PyObject *__pyx_int_119948357;
static PyObject *__pyx_int_128527296;
static PyObject *__pyx_int_129754538;
static PyObject *__pyx_int_138368889;
static PyObject *__pyx_int_141271449;
static PyObject *__pyx_int_151978152;
static PyObject *__pyx_int_153188860;
static PyObject *__pyx_int_159314353;
static PyObject *__pyx_int_174143295;
static PyObject *__pyx_int_179286492;
static PyObject *__pyx_int_185544032;
static PyObject *__pyx_int_188265286;
static PyObject *__pyx_int_210124308;
static PyObject *__pyx_int_217540299;
static PyObject *__pyx_int_219789001;
static PyObject *__pyx_int_228146014;
static PyObject *__pyx_int_241521041;
static PyObject *__pyx_int_242672649;
static PyObject *__pyx_int_251556977;
static PyObject *__pyx_int_258009577;
static PyObject *__pyx_int_261406006;
static PyObject *__pyx_int_262512166;
static PyObject *__pyx_int_266904154;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__64;
static PyObject *__pyx_tuple__66;
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__72;
static PyObject *__pyx_tuple__74;
static PyObject *__pyx_tuple__76;
static PyObject *__pyx_tuple__78;
static PyObject *__pyx_tuple__80;
static PyObject *__pyx_tuple__82;
static PyObject *__pyx_tuple__84;
static PyObject *__pyx_tuple__86;
static PyObject *__pyx_tuple__88;
static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__94;
static PyObject *__pyx_tuple__96;
static PyObject *__pyx_tuple__98;
static PyObject *__pyx_codeobj__3;
static PyObject *__pyx_codeobj__5;
static PyObject *__pyx_codeobj__7;
static PyObject *__pyx_codeobj__9;
static PyObject *__pyx_tuple__100;
static PyObject *__pyx_tuple__102;
static PyObject *__pyx_tuple__104;
static PyObject *__pyx_tuple__106;
static PyObject *__pyx_tuple__108;
static PyObject *__pyx_tuple__110;
static PyObject *__pyx_tuple__112;
static PyObject *__pyx_tuple__114;
static PyObject *__pyx_codeobj__11;
static PyObject *__pyx_codeobj__13;
static PyObject *__pyx_codeobj__15;
static PyObject *__pyx_codeobj__17;
static PyObject *__pyx_codeobj__19;
static PyObject *__pyx_codeobj__21;
static PyObject *__pyx_codeobj__23;
static PyObject *__pyx_codeobj__25;
static PyObject *__pyx_codeobj__27;
static PyObject *__pyx_codeobj__29;
static PyObject *__pyx_codeobj__31;
static PyObject *__pyx_codeobj__33;
static PyObject *__pyx_codeobj__35;
static PyObject *__pyx_codeobj__37;
static PyObject *__pyx_codeobj__39;
static PyObject *__pyx_codeobj__41;
static PyObject *__pyx_codeobj__43;
static PyObject *__pyx_codeobj__45;
static PyObject *__pyx_codeobj__47;
static PyObject *__pyx_codeobj__49;
static PyObject *__pyx_codeobj__51;
static PyObject *__pyx_codeobj__53;
static PyObject *__pyx_codeobj__55;
static PyObject *__pyx_codeobj__57;
static PyObject *__pyx_codeobj__59;
static PyObject *__pyx_codeobj__61;
static PyObject *__pyx_codeobj__63;
static PyObject *__pyx_codeobj__65;
static PyObject *__pyx_codeobj__67;
static PyObject *__pyx_codeobj__69;
static PyObject *__pyx_codeobj__71;
static PyObject *__pyx_codeobj__73;
static PyObject *__pyx_codeobj__75;
static PyObject *__pyx_codeobj__77;
static PyObject *__pyx_codeobj__79;
static PyObject *__pyx_codeobj__81;
static PyObject *__pyx_codeobj__83;
static PyObject *__pyx_codeobj__85;
static PyObject *__pyx_codeobj__87;
static PyObject *__pyx_codeobj__89;
static PyObject *__pyx_codeobj__91;
static PyObject *__pyx_codeobj__93;
static PyObject *__pyx_codeobj__95;
static PyObject *__pyx_codeobj__97;
static PyObject *__pyx_codeobj__99;
static PyObject *__pyx_codeobj__101;
static PyObject *__pyx_codeobj__103;
static PyObject *__pyx_codeobj__105;
static PyObject *__pyx_codeobj__107;
static PyObject *__pyx_codeobj__109;
static PyObject *__pyx_codeobj__111;
static PyObject *__pyx_codeobj__113;
static PyObject *__pyx_codeobj__115;
/* Late includes */

/* "apischema/deserialization/methods.pyx":37
 *     cdef int _dispatch
 * 
 *     def __init__(self, error):             # <<<<<<<<<<<<<<
 *         self.error = error
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_10Constraint_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_10Constraint_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 37, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_error = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 37, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.Constraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10Constraint___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_v_self), __pyx_v_error);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_10Constraint___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self, PyObject *__pyx_v_error) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":38
 * 
 *     def __init__(self, error):
 *         self.error = error             # <<<<<<<<<<<<<<
 * 
 * cdef class MinimumConstraint(Constraint):
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->error);
  __Pyx_DECREF(__pyx_v_self->error);
  __pyx_v_self->error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":37
 *     cdef int _dispatch
 * 
 *     def __init__(self, error):             # <<<<<<<<<<<<<<
 *         self.error = error
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":34
 * 
 * cdef class Constraint():
 *     cdef readonly object error             # <<<<<<<<<<<<<<
 *     cdef int _dispatch
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_5error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_5error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10Constraint_5error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->error);
  __pyx_r = __pyx_v_self->error;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10Constraint_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->error);
  __Pyx_GIVEREF(__pyx_v_self->error);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->error);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->error != Py_None);
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Constraint); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_86498115);
    __Pyx_GIVEREF(__pyx_int_86498115);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_86498115);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, None), state
 *     else:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Constraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Constraint); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_86498115);
    __Pyx_GIVEREF(__pyx_int_86498115);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_86498115);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Constraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10Constraint_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10Constraint_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10Constraint_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Constraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Constraint, (type(self), 0x527db43, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Constraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":43
 *     cdef readonly long minimum
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinimumConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  long __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":44
 * 
 *     cpdef validate(self, object data):
 *         return MinimumConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, minimum):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 44, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MinimumConstraint_validate(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":43
 *     cdef readonly long minimum
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinimumConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_17MinimumConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":46
 *         return MinimumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, minimum):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.minimum = minimum
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_minimum = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_minimum,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_minimum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 46, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 46, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_minimum = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 46, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_minimum);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_minimum) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":47
 * 
 *     def __init__(self, error, minimum):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.minimum = minimum
 *         self._dispatch = 0
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":48
 *     def __init__(self, error, minimum):
 *         self.error = error
 *         self.minimum = minimum             # <<<<<<<<<<<<<<
 *         self._dispatch = 0
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_minimum); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error)
  __pyx_v_self->minimum = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":49
 *         self.error = error
 *         self.minimum = minimum
 *         self._dispatch = 0             # <<<<<<<<<<<<<<
 * 
 * cdef class MaximumConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 0;

  /* "apischema/deserialization/methods.pyx":46
 *         return MinimumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, minimum):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.minimum = minimum
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":41
 * 
 * cdef class MinimumConstraint(Constraint):
 *     cdef readonly long minimum             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->minimum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.minimum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.minimum)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->minimum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.minimum)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.minimum)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.minimum)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MinimumConstraint); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_266904154);
    __Pyx_GIVEREF(__pyx_int_266904154);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_266904154);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, None), state
 *     else:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinimumConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MinimumConstraint); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_266904154);
    __Pyx_GIVEREF(__pyx_int_266904154);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_266904154);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinimumConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MinimumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinimumConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinimumConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinimumConstraint, (type(self), 0xfe8a25a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinimumConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":54
 *     cdef readonly long maximum
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaximumConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  long __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":55
 * 
 *     cpdef validate(self, object data):
 *         return MaximumConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, maximum):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MaximumConstraint_validate(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":54
 *     cdef readonly long maximum
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaximumConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_17MaximumConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":57
 *         return MaximumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, maximum):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.maximum = maximum
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_maximum = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_maximum,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maximum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 57, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 57, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_maximum = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 57, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_maximum);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_maximum) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":58
 * 
 *     def __init__(self, error, maximum):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.maximum = maximum
 *         self._dispatch = 1
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":59
 *     def __init__(self, error, maximum):
 *         self.error = error
 *         self.maximum = maximum             # <<<<<<<<<<<<<<
 *         self._dispatch = 1
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_maximum); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L1_error)
  __pyx_v_self->maximum = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":60
 *         self.error = error
 *         self.maximum = maximum
 *         self._dispatch = 1             # <<<<<<<<<<<<<<
 * 
 * cdef class ExclusiveMinimumConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 1;

  /* "apischema/deserialization/methods.pyx":57
 *         return MaximumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, maximum):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.maximum = maximum
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":52
 * 
 * cdef class MaximumConstraint(Constraint):
 *     cdef readonly long maximum             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->maximum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.maximum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.maximum)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->maximum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.maximum)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.maximum)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.maximum)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MaximumConstraint); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_100986846);
    __Pyx_GIVEREF(__pyx_int_100986846);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_100986846);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, None), state
 *     else:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaximumConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MaximumConstraint); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_100986846);
    __Pyx_GIVEREF(__pyx_int_100986846);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_100986846);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaximumConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17MaximumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaximumConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaximumConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaximumConstraint, (type(self), 0x604efde, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaximumConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":65
 *     cdef readonly long exc_min
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return ExclusiveMinimumConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  long __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":66
 * 
 *     cpdef validate(self, object data):
 *         return ExclusiveMinimumConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, exc_min):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 66, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint_validate(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":65
 *     cdef readonly long exc_min
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return ExclusiveMinimumConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":68
 *         return ExclusiveMinimumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, exc_min):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.exc_min = exc_min
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_exc_min = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_exc_min,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_min)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 68, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 68, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_exc_min = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 68, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_exc_min);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_exc_min) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":69
 * 
 *     def __init__(self, error, exc_min):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.exc_min = exc_min
 *         self._dispatch = 2
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":70
 *     def __init__(self, error, exc_min):
 *         self.error = error
 *         self.exc_min = exc_min             # <<<<<<<<<<<<<<
 *         self._dispatch = 2
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_exc_min); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L1_error)
  __pyx_v_self->exc_min = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":71
 *         self.error = error
 *         self.exc_min = exc_min
 *         self._dispatch = 2             # <<<<<<<<<<<<<<
 * 
 * cdef class ExclusiveMaximumConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 2;

  /* "apischema/deserialization/methods.pyx":68
 *         return ExclusiveMinimumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, exc_min):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.exc_min = exc_min
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":63
 * 
 * cdef class ExclusiveMinimumConstraint(Constraint):
 *     cdef readonly long exc_min             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->exc_min); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.exc_min.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.exc_min)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->exc_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.exc_min)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.exc_min)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.exc_min)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_ExclusiveMinimumC); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_110427570);
    __Pyx_GIVEREF(__pyx_int_110427570);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_110427570);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, None), state
 *     else:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ExclusiveMinimumConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ExclusiveMinimumC); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_110427570);
    __Pyx_GIVEREF(__pyx_int_110427570);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_110427570);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ExclusiveMinimumConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ExclusiveMinimumConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMinimumConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ExclusiveMinimumConstraint, (type(self), 0x694fdb2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ExclusiveMinimumConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":76
 *     cdef readonly long exc_max
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return ExclusiveMaximumConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  long __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":77
 * 
 *     cpdef validate(self, object data):
 *         return ExclusiveMaximumConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, exc_max):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 77, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint_validate(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":76
 *     cdef readonly long exc_max
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return ExclusiveMaximumConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":79
 *         return ExclusiveMaximumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, exc_max):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.exc_max = exc_max
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_exc_max = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_exc_max,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_max)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 79, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 79, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_exc_max = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 79, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_exc_max);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_exc_max) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":80
 * 
 *     def __init__(self, error, exc_max):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.exc_max = exc_max
 *         self._dispatch = 3
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":81
 *     def __init__(self, error, exc_max):
 *         self.error = error
 *         self.exc_max = exc_max             # <<<<<<<<<<<<<<
 *         self._dispatch = 3
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_exc_max); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 81, __pyx_L1_error)
  __pyx_v_self->exc_max = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":82
 *         self.error = error
 *         self.exc_max = exc_max
 *         self._dispatch = 3             # <<<<<<<<<<<<<<
 * 
 * cdef class MultipleOfConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 3;

  /* "apischema/deserialization/methods.pyx":79
 *         return ExclusiveMaximumConstraint_validate(self, data)
 * 
 *     def __init__(self, error, exc_max):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.exc_max = exc_max
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":74
 * 
 * cdef class ExclusiveMaximumConstraint(Constraint):
 *     cdef readonly long exc_max             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->exc_max); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.exc_max.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.exc_max)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->exc_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.exc_max)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.exc_max)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.exc_max)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_ExclusiveMaximumC); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_128527296);
    __Pyx_GIVEREF(__pyx_int_128527296);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_128527296);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, None), state
 *     else:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ExclusiveMaximumConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ExclusiveMaximumC); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_128527296);
    __Pyx_GIVEREF(__pyx_int_128527296);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_128527296);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ExclusiveMaximumConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ExclusiveMaximumConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMaximumConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ExclusiveMaximumConstraint, (type(self), 0x7a92bc0, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ExclusiveMaximumConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":87
 *     cdef readonly long mult_of
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MultipleOfConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  long __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":88
 * 
 *     cpdef validate(self, object data):
 *         return MultipleOfConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, mult_of):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MultipleOfConstraint_validate(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":87
 *     cdef readonly long mult_of
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MultipleOfConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":90
 *         return MultipleOfConstraint_validate(self, data)
 * 
 *     def __init__(self, error, mult_of):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.mult_of = mult_of
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_mult_of = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_mult_of,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mult_of)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 90, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 90, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_mult_of = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 90, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_mult_of);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_mult_of) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":91
 * 
 *     def __init__(self, error, mult_of):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.mult_of = mult_of
 *         self._dispatch = 4
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":92
 *     def __init__(self, error, mult_of):
 *         self.error = error
 *         self.mult_of = mult_of             # <<<<<<<<<<<<<<
 *         self._dispatch = 4
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_mult_of); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
  __pyx_v_self->mult_of = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":93
 *         self.error = error
 *         self.mult_of = mult_of
 *         self._dispatch = 4             # <<<<<<<<<<<<<<
 * 
 * cdef class MinLengthConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 4;

  /* "apischema/deserialization/methods.pyx":90
 *         return MultipleOfConstraint_validate(self, data)
 * 
 *     def __init__(self, error, mult_of):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.mult_of = mult_of
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":85
 * 
 * cdef class MultipleOfConstraint(Constraint):
 *     cdef readonly long mult_of             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->mult_of); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.mult_of.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.mult_of)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->mult_of); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.mult_of)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.mult_of)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.mult_of)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MultipleOfConstra); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_50548289);
    __Pyx_GIVEREF(__pyx_int_50548289);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_50548289);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, None), state
 *     else:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MultipleOfConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MultipleOfConstra); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_50548289);
    __Pyx_GIVEREF(__pyx_int_50548289);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_50548289);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MultipleOfConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20MultipleOfConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MultipleOfConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MultipleOfConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MultipleOfConstraint, (type(self), 0x3034e41, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MultipleOfConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":98
 *     cdef readonly long min_len
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinLengthConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":99
 * 
 *     cpdef validate(self, object data):
 *         return MinLengthConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, min_len):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 99, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MinLengthConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":98
 *     cdef readonly long min_len
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinLengthConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_19MinLengthConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":101
 *         return MinLengthConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_len):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_len = min_len
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_min_len = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_min_len,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_min_len)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 101, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 101, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_min_len = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 101, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_min_len);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_len) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":102
 * 
 *     def __init__(self, error, min_len):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.min_len = min_len
 *         self._dispatch = 5
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":103
 *     def __init__(self, error, min_len):
 *         self.error = error
 *         self.min_len = min_len             # <<<<<<<<<<<<<<
 *         self._dispatch = 5
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_min_len); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L1_error)
  __pyx_v_self->min_len = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":104
 *         self.error = error
 *         self.min_len = min_len
 *         self._dispatch = 5             # <<<<<<<<<<<<<<
 * 
 * cdef class MaxLengthConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 5;

  /* "apischema/deserialization/methods.pyx":101
 *         return MinLengthConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_len):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_len = min_len
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":96
 * 
 * cdef class MinLengthConstraint(Constraint):
 *     cdef readonly long min_len             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->min_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.min_len.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_len)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->min_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_len)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_len)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_len)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MinLengthConstrai); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_87055098);
    __Pyx_GIVEREF(__pyx_int_87055098);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_87055098);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, None), state
 *     else:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinLengthConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MinLengthConstrai); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_87055098);
    __Pyx_GIVEREF(__pyx_int_87055098);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_87055098);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinLengthConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MinLengthConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinLengthConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinLengthConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinLengthConstraint, (type(self), 0x5305afa, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinLengthConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":109
 *     cdef readonly long max_len
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxLengthConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":110
 * 
 *     cpdef validate(self, object data):
 *         return MaxLengthConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, max_len):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 110, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MaxLengthConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":109
 *     cdef readonly long max_len
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxLengthConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":112
 *         return MaxLengthConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_len):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_len = max_len
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_max_len = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_max_len,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_len)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 112, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 112, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_max_len = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 112, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_max_len);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_len) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":113
 * 
 *     def __init__(self, error, max_len):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.max_len = max_len
 *         self._dispatch = 6
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":114
 *     def __init__(self, error, max_len):
 *         self.error = error
 *         self.max_len = max_len             # <<<<<<<<<<<<<<
 *         self._dispatch = 6
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_max_len); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L1_error)
  __pyx_v_self->max_len = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":115
 *         self.error = error
 *         self.max_len = max_len
 *         self._dispatch = 6             # <<<<<<<<<<<<<<
 * 
 * cdef class PatternConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 6;

  /* "apischema/deserialization/methods.pyx":112
 *         return MaxLengthConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_len):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_len = max_len
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":107
 * 
 * cdef class MaxLengthConstraint(Constraint):
 *     cdef readonly long max_len             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->max_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.max_len.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_len)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->max_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_len)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_len)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_len)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MaxLengthConstrai); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_141271449);
    __Pyx_GIVEREF(__pyx_int_141271449);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_141271449);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, None), state
 *     else:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxLengthConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MaxLengthConstrai); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_141271449);
    __Pyx_GIVEREF(__pyx_int_141271449);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_141271449);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxLengthConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19MaxLengthConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxLengthConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxLengthConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxLengthConstraint, (type(self), 0x86ba199, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxLengthConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":120
 *     cdef readonly object pattern
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return PatternConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":121
 * 
 *     cpdef validate(self, object data):
 *         return PatternConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, pattern):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 121, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_PatternConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":120
 *     cdef readonly object pattern
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return PatternConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_17PatternConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":123
 *         return PatternConstraint_validate(self, data)
 * 
 *     def __init__(self, error, pattern):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.pattern = pattern
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_pattern = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_pattern,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 123, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 123, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_pattern = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_pattern);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_pattern) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":124
 * 
 *     def __init__(self, error, pattern):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.pattern = pattern
 *         self._dispatch = 7
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":125
 *     def __init__(self, error, pattern):
 *         self.error = error
 *         self.pattern = pattern             # <<<<<<<<<<<<<<
 *         self._dispatch = 7
 * 
 */
  __Pyx_INCREF(__pyx_v_pattern);
  __Pyx_GIVEREF(__pyx_v_pattern);
  __Pyx_GOTREF(__pyx_v_self->pattern);
  __Pyx_DECREF(__pyx_v_self->pattern);
  __pyx_v_self->pattern = __pyx_v_pattern;

  /* "apischema/deserialization/methods.pyx":126
 *         self.error = error
 *         self.pattern = pattern
 *         self._dispatch = 7             # <<<<<<<<<<<<<<
 * 
 * cdef class MinItemsConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 7;

  /* "apischema/deserialization/methods.pyx":123
 *         return PatternConstraint_validate(self, data)
 * 
 *     def __init__(self, error, pattern):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.pattern = pattern
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":118
 * 
 * cdef class PatternConstraint(Constraint):
 *     cdef readonly object pattern             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7pattern_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7pattern_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_7pattern___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_7pattern___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->pattern);
  __pyx_r = __pyx_v_self->pattern;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.pattern)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_INCREF(__pyx_v_self->pattern);
  __Pyx_GIVEREF(__pyx_v_self->pattern);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->pattern);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.pattern)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.pattern)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None or self.pattern is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.pattern)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None or self.pattern is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->pattern != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None or self.pattern is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None or self.pattern is not None
 *     if use_setstate:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_PatternConstraint); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_138368889);
    __Pyx_GIVEREF(__pyx_int_138368889);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_138368889);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None or self.pattern is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, None), state
 *     else:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PatternConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_PatternConstraint); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_138368889);
    __Pyx_GIVEREF(__pyx_int_138368889);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_138368889);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PatternConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17PatternConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PatternConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PatternConstraint, (type(self), 0x83f5779, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PatternConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":131
 *     cdef readonly long min_items
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinItemsConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":132
 * 
 *     cpdef validate(self, object data):
 *         return MinItemsConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, min_items):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 132, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MinItemsConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":131
 *     cdef readonly long min_items
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinItemsConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_18MinItemsConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":134
 *         return MinItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_items):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_items = min_items
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_min_items = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_min_items,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_min_items)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 134, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 134, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_min_items = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 134, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_min_items);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_items) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":135
 * 
 *     def __init__(self, error, min_items):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.min_items = min_items
 *         self._dispatch = 8
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":136
 *     def __init__(self, error, min_items):
 *         self.error = error
 *         self.min_items = min_items             # <<<<<<<<<<<<<<
 *         self._dispatch = 8
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_min_items); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L1_error)
  __pyx_v_self->min_items = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":137
 *         self.error = error
 *         self.min_items = min_items
 *         self._dispatch = 8             # <<<<<<<<<<<<<<
 * 
 * cdef class MaxItemsConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 8;

  /* "apischema/deserialization/methods.pyx":134
 *         return MinItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_items):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_items = min_items
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":129
 * 
 * cdef class MinItemsConstraint(Constraint):
 *     cdef readonly long min_items             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->min_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.min_items.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_items)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->min_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_items)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_items)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_items)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MinItemsConstrain); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_159314353);
    __Pyx_GIVEREF(__pyx_int_159314353);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_159314353);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, None), state
 *     else:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinItemsConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MinItemsConstrain); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_159314353);
    __Pyx_GIVEREF(__pyx_int_159314353);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_159314353);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinItemsConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MinItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinItemsConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinItemsConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinItemsConstraint, (type(self), 0x97ef1b1, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinItemsConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":142
 *     cdef readonly long max_items
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxItemsConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":143
 * 
 *     cpdef validate(self, object data):
 *         return MaxItemsConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, max_items):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 143, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MaxItemsConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":142
 *     cdef readonly long max_items
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxItemsConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":145
 *         return MaxItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_items):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_items = max_items
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_max_items = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_max_items,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_items)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 145, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 145, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_max_items = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 145, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_max_items);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_items) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":146
 * 
 *     def __init__(self, error, max_items):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.max_items = max_items
 *         self._dispatch = 9
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":147
 *     def __init__(self, error, max_items):
 *         self.error = error
 *         self.max_items = max_items             # <<<<<<<<<<<<<<
 *         self._dispatch = 9
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_max_items); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L1_error)
  __pyx_v_self->max_items = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":148
 *         self.error = error
 *         self.max_items = max_items
 *         self._dispatch = 9             # <<<<<<<<<<<<<<
 * 
 * cdef class UniqueItemsConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 9;

  /* "apischema/deserialization/methods.pyx":145
 *         return MaxItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_items):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_items = max_items
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":140
 * 
 * cdef class MaxItemsConstraint(Constraint):
 *     cdef readonly long max_items             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->max_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.max_items.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_items)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->max_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_items)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_items)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_items)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MaxItemsConstrain); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_31099836);
    __Pyx_GIVEREF(__pyx_int_31099836);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_31099836);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, None), state
 *     else:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxItemsConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MaxItemsConstrain); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_31099836);
    __Pyx_GIVEREF(__pyx_int_31099836);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_31099836);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxItemsConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18MaxItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxItemsConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxItemsConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxItemsConstraint, (type(self), 0x1da8bbc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxItemsConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":153
 *     cdef readonly bint unique
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return UniqueItemsConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":154
 * 
 *     cpdef validate(self, object data):
 *         return UniqueItemsConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, unique):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 154, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_UniqueItemsConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":153
 *     cdef readonly bint unique
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return UniqueItemsConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":156
 *         return UniqueItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, unique):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.unique = unique
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_unique = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_unique,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unique)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 156, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 156, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_unique = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 156, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_unique);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_unique) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":157
 * 
 *     def __init__(self, error, unique):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.unique = unique
 *         assert self.unique
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":158
 *     def __init__(self, error, unique):
 *         self.error = error
 *         self.unique = unique             # <<<<<<<<<<<<<<
 *         assert self.unique
 *         self._dispatch = 10
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error)
  __pyx_v_self->unique = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":159
 *         self.error = error
 *         self.unique = unique
 *         assert self.unique             # <<<<<<<<<<<<<<
 *         self._dispatch = 10
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!(__pyx_v_self->unique != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 159, __pyx_L1_error)
    }
  }
  #endif

  /* "apischema/deserialization/methods.pyx":160
 *         self.unique = unique
 *         assert self.unique
 *         self._dispatch = 10             # <<<<<<<<<<<<<<
 * 
 * cdef class MinPropertiesConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 10;

  /* "apischema/deserialization/methods.pyx":156
 *         return UniqueItemsConstraint_validate(self, data)
 * 
 *     def __init__(self, error, unique):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.unique = unique
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":151
 * 
 * cdef class UniqueItemsConstraint(Constraint):
 *     cdef readonly bint unique             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->unique); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.unique.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.unique)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->unique); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.unique)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.unique)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.unique)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_UniqueItemsConstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_10534196);
    __Pyx_GIVEREF(__pyx_int_10534196);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_10534196);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, None), state
 *     else:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UniqueItemsConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_UniqueItemsConstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_10534196);
    __Pyx_GIVEREF(__pyx_int_10534196);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_10534196);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UniqueItemsConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UniqueItemsConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UniqueItemsConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UniqueItemsConstraint, (type(self), 0x0a0bd34, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UniqueItemsConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":165
 *     cdef readonly long min_properties
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinPropertiesConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":166
 * 
 *     cpdef validate(self, object data):
 *         return MinPropertiesConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, min_properties):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 166, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MinPropertiesConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":165
 *     cdef readonly long min_properties
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MinPropertiesConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":168
 *         return MinPropertiesConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_properties):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_properties = min_properties
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_min_properties = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_min_properties,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_min_properties)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 168, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 168, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_min_properties = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 168, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_min_properties);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_min_properties) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":169
 * 
 *     def __init__(self, error, min_properties):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.min_properties = min_properties
 *         self._dispatch = 11
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":170
 *     def __init__(self, error, min_properties):
 *         self.error = error
 *         self.min_properties = min_properties             # <<<<<<<<<<<<<<
 *         self._dispatch = 11
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_min_properties); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L1_error)
  __pyx_v_self->min_properties = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":171
 *         self.error = error
 *         self.min_properties = min_properties
 *         self._dispatch = 11             # <<<<<<<<<<<<<<
 * 
 * cdef class MaxPropertiesConstraint(Constraint):
 */
  __pyx_v_self->__pyx_base._dispatch = 11;

  /* "apischema/deserialization/methods.pyx":168
 *         return MinPropertiesConstraint_validate(self, data)
 * 
 *     def __init__(self, error, min_properties):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.min_properties = min_properties
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":163
 * 
 * cdef class MinPropertiesConstraint(Constraint):
 *     cdef readonly long min_properties             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->min_properties); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.min_properties.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_properties)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->min_properties); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.min_properties)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_properties)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.min_properties)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MinPropertiesCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_219789001);
    __Pyx_GIVEREF(__pyx_int_219789001);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_219789001);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, None), state
 *     else:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinPropertiesConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MinPropertiesCons); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_219789001);
    __Pyx_GIVEREF(__pyx_int_219789001);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_219789001);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinPropertiesConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MinPropertiesConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MinPropertiesConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinPropertiesConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MinPropertiesConstraint, (type(self), 0xd19b6c9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MinPropertiesConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":176
 *     cdef readonly long max_properties
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxPropertiesConstraint_validate(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_1validate)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":177
 * 
 *     cpdef validate(self, object data):
 *         return MaxPropertiesConstraint_validate(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, error, max_properties):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 177, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MaxPropertiesConstraint_validate(__pyx_v_self, ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":176
 *     cdef readonly long max_properties
 * 
 *     cpdef validate(self, object data):             # <<<<<<<<<<<<<<
 *         return MaxPropertiesConstraint_validate(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_1validate(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":179
 *         return MaxPropertiesConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_properties):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_properties = max_properties
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_max_properties = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,&__pyx_n_s_max_properties,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_properties)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 179, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 179, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_error = values[0];
    __pyx_v_max_properties = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 179, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self), __pyx_v_error, __pyx_v_max_properties);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_error, PyObject *__pyx_v_max_properties) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":180
 * 
 *     def __init__(self, error, max_properties):
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.max_properties = max_properties
 *         self._dispatch = 12
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.error);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.error);
  __pyx_v_self->__pyx_base.error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":181
 *     def __init__(self, error, max_properties):
 *         self.error = error
 *         self.max_properties = max_properties             # <<<<<<<<<<<<<<
 *         self._dispatch = 12
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_max_properties); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 181, __pyx_L1_error)
  __pyx_v_self->max_properties = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":182
 *         self.error = error
 *         self.max_properties = max_properties
 *         self._dispatch = 12             # <<<<<<<<<<<<<<
 * 
 * cdef class DeserializationMethod():
 */
  __pyx_v_self->__pyx_base._dispatch = 12;

  /* "apischema/deserialization/methods.pyx":179
 *         return MaxPropertiesConstraint_validate(self, data)
 * 
 *     def __init__(self, error, max_properties):             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.max_properties = max_properties
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":174
 * 
 * cdef class MaxPropertiesConstraint(Constraint):
 *     cdef readonly long max_properties             # <<<<<<<<<<<<<<
 * 
 *     cpdef validate(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->max_properties); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.max_properties.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_properties)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->max_properties); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.error);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.error, self.max_properties)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_properties)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.error, self.max_properties)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, None), state
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_self->__pyx_base.error != Py_None);
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_MaxPropertiesCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_251556977);
    __Pyx_GIVEREF(__pyx_int_251556977);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_251556977);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, None), state
 *     else:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxPropertiesConstraint__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MaxPropertiesCons); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_251556977);
    __Pyx_GIVEREF(__pyx_int_251556977);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_251556977);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxPropertiesConstraint__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MaxPropertiesConstraint__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxPropertiesConstraint__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MaxPropertiesConstraint, (type(self), 0xefe7471, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MaxPropertiesConstraint__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod___reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod___reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_DeserializationMe); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DeserializationMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_DeserializationMe); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.DeserializationMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DeserializationMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod_2__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21DeserializationMethod_2__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DeserializationMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DeserializationMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DeserializationMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DeserializationMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DeserializationMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":191
 *     cdef readonly object method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return RecMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":192
 * 
 *     cpdef deserialize(self, object data):
 *         return RecMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, lazy):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_RecMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":191
 *     cdef readonly object method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return RecMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_9RecMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":194
 *         return RecMethod_deserialize(self, data)
 * 
 *     def __init__(self, lazy):             # <<<<<<<<<<<<<<
 *         self.lazy = lazy
 *         self.method = None
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_9RecMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_9RecMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_lazy = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lazy,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lazy)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 194, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_lazy = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 194, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self), __pyx_v_lazy);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_lazy) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":195
 * 
 *     def __init__(self, lazy):
 *         self.lazy = lazy             # <<<<<<<<<<<<<<
 *         self.method = None
 *         self._dispatch = 0
 */
  __Pyx_INCREF(__pyx_v_lazy);
  __Pyx_GIVEREF(__pyx_v_lazy);
  __Pyx_GOTREF(__pyx_v_self->lazy);
  __Pyx_DECREF(__pyx_v_self->lazy);
  __pyx_v_self->lazy = __pyx_v_lazy;

  /* "apischema/deserialization/methods.pyx":196
 *     def __init__(self, lazy):
 *         self.lazy = lazy
 *         self.method = None             # <<<<<<<<<<<<<<
 *         self._dispatch = 0
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(__pyx_v_self->method);
  __pyx_v_self->method = Py_None;

  /* "apischema/deserialization/methods.pyx":197
 *         self.lazy = lazy
 *         self.method = None
 *         self._dispatch = 0             # <<<<<<<<<<<<<<
 * 
 * cdef class ValidatorMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 0;

  /* "apischema/deserialization/methods.pyx":194
 *         return RecMethod_deserialize(self, data)
 * 
 *     def __init__(self, lazy):             # <<<<<<<<<<<<<<
 *         self.lazy = lazy
 *         self.method = None
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":188
 * 
 * cdef class RecMethod(DeserializationMethod):
 *     cdef readonly object lazy             # <<<<<<<<<<<<<<
 *     cdef readonly object method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_4lazy_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_4lazy_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4lazy___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4lazy___get__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->lazy);
  __pyx_r = __pyx_v_self->lazy;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":189
 * cdef class RecMethod(DeserializationMethod):
 *     cdef readonly object lazy
 *     cdef readonly object method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->method);
  __pyx_r = __pyx_v_self->method;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.lazy, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->lazy);
  __Pyx_GIVEREF(__pyx_v_self->lazy);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->lazy);
  __Pyx_INCREF(__pyx_v_self->method);
  __Pyx_GIVEREF(__pyx_v_self->method);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->method);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.lazy, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.lazy, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.lazy is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.lazy, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.lazy is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->lazy != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->method != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.lazy is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.lazy is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_RecMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_105653666);
    __Pyx_GIVEREF(__pyx_int_105653666);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_105653666);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.lazy is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, None), state
 *     else:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_RecMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_RecMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_105653666);
    __Pyx_GIVEREF(__pyx_int_105653666);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_105653666);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_RecMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9RecMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_RecMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RecMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_RecMethod, (type(self), 0x64c25a2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_RecMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":204
 *     cdef readonly object aliaser
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ValidatorMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":205
 * 
 *     cpdef deserialize(self, object data):
 *         return ValidatorMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, method, validators, aliaser):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ValidatorMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":204
 *     cdef readonly object aliaser
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ValidatorMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":207
 *         return ValidatorMethod_deserialize(self, data)
 * 
 *     def __init__(self, method, validators, aliaser):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.validators = validators
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_validators = 0;
  PyObject *__pyx_v_aliaser = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_validators,&__pyx_n_s_aliaser,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validators)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 207, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_aliaser)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 207, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_method = values[0];
    __pyx_v_validators = values[1];
    __pyx_v_aliaser = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 207, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self), __pyx_v_method, __pyx_v_validators, __pyx_v_aliaser);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_validators, PyObject *__pyx_v_aliaser) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":208
 * 
 *     def __init__(self, method, validators, aliaser):
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.validators = validators
 *         self.aliaser = aliaser
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 208, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":209
 *     def __init__(self, method, validators, aliaser):
 *         self.method = method
 *         self.validators = validators             # <<<<<<<<<<<<<<
 *         self.aliaser = aliaser
 *         self._dispatch = 1
 */
  __Pyx_INCREF(__pyx_v_validators);
  __Pyx_GIVEREF(__pyx_v_validators);
  __Pyx_GOTREF(__pyx_v_self->validators);
  __Pyx_DECREF(__pyx_v_self->validators);
  __pyx_v_self->validators = __pyx_v_validators;

  /* "apischema/deserialization/methods.pyx":210
 *         self.method = method
 *         self.validators = validators
 *         self.aliaser = aliaser             # <<<<<<<<<<<<<<
 *         self._dispatch = 1
 * 
 */
  __Pyx_INCREF(__pyx_v_aliaser);
  __Pyx_GIVEREF(__pyx_v_aliaser);
  __Pyx_GOTREF(__pyx_v_self->aliaser);
  __Pyx_DECREF(__pyx_v_self->aliaser);
  __pyx_v_self->aliaser = __pyx_v_aliaser;

  /* "apischema/deserialization/methods.pyx":211
 *         self.validators = validators
 *         self.aliaser = aliaser
 *         self._dispatch = 1             # <<<<<<<<<<<<<<
 * 
 * cdef class CoercerMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 1;

  /* "apischema/deserialization/methods.pyx":207
 *         return ValidatorMethod_deserialize(self, data)
 * 
 *     def __init__(self, method, validators, aliaser):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.validators = validators
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":200
 * 
 * cdef class ValidatorMethod(DeserializationMethod):
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly object validators
 *     cdef readonly object aliaser
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":201
 * cdef class ValidatorMethod(DeserializationMethod):
 *     cdef readonly DeserializationMethod method
 *     cdef readonly object validators             # <<<<<<<<<<<<<<
 *     cdef readonly object aliaser
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_10validators_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_10validators_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_10validators___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_10validators___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->validators);
  __pyx_r = __pyx_v_self->validators;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":202
 *     cdef readonly DeserializationMethod method
 *     cdef readonly object validators
 *     cdef readonly object aliaser             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->aliaser);
  __pyx_r = __pyx_v_self->aliaser;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.aliaser, self.method, self.validators)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->aliaser);
  __Pyx_GIVEREF(__pyx_v_self->aliaser);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->aliaser);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->method));
  __Pyx_INCREF(__pyx_v_self->validators);
  __Pyx_GIVEREF(__pyx_v_self->validators);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->validators);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.aliaser, self.method, self.validators)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.aliaser, self.method, self.validators)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.aliaser is not None or self.method is not None or self.validators is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.aliaser, self.method, self.validators)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.aliaser is not None or self.method is not None or self.validators is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->aliaser != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->validators != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.aliaser is not None or self.method is not None or self.validators is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.aliaser is not None or self.method is not None or self.validators is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ValidatorMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_185544032);
    __Pyx_GIVEREF(__pyx_int_185544032);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_185544032);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.aliaser is not None or self.method is not None or self.validators is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, None), state
 *     else:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ValidatorMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ValidatorMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_185544032);
    __Pyx_GIVEREF(__pyx_int_185544032);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_185544032);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ValidatorMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15ValidatorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ValidatorMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ValidatorMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ValidatorMethod, (type(self), 0xb0f2d60, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ValidatorMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":218
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return CoercerMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":219
 * 
 *     cpdef deserialize(self, object data):
 *         return CoercerMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, coercer, cls, method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_CoercerMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":218
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return CoercerMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_13CoercerMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":221
 *         return CoercerMethod_deserialize(self, data)
 * 
 *     def __init__(self, coercer, cls, method):             # <<<<<<<<<<<<<<
 *         self.coercer = coercer
 *         self.cls = cls
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coercer = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coercer,&__pyx_n_s_cls,&__pyx_n_s_method,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coercer)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 221, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 221, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 221, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_coercer = values[0];
    __pyx_v_cls = values[1];
    __pyx_v_method = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 221, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self), __pyx_v_coercer, __pyx_v_cls, __pyx_v_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_coercer, PyObject *__pyx_v_cls, PyObject *__pyx_v_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":222
 * 
 *     def __init__(self, coercer, cls, method):
 *         self.coercer = coercer             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self.method = method
 */
  __Pyx_INCREF(__pyx_v_coercer);
  __Pyx_GIVEREF(__pyx_v_coercer);
  __Pyx_GOTREF(__pyx_v_self->coercer);
  __Pyx_DECREF(__pyx_v_self->coercer);
  __pyx_v_self->coercer = __pyx_v_coercer;

  /* "apischema/deserialization/methods.pyx":223
 *     def __init__(self, coercer, cls, method):
 *         self.coercer = coercer
 *         self.cls = cls             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 2
 */
  if (!(likely(PyType_CheckExact(__pyx_v_cls))||((__pyx_v_cls) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_v_cls)->tp_name), 0))) __PYX_ERR(0, 223, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_cls;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->cls);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->cls));
  __pyx_v_self->cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":224
 *         self.coercer = coercer
 *         self.cls = cls
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self._dispatch = 2
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 224, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":225
 *         self.cls = cls
 *         self.method = method
 *         self._dispatch = 2             # <<<<<<<<<<<<<<
 * 
 * cdef class TypeCheckMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 2;

  /* "apischema/deserialization/methods.pyx":221
 *         return CoercerMethod_deserialize(self, data)
 * 
 *     def __init__(self, coercer, cls, method):             # <<<<<<<<<<<<<<
 *         self.coercer = coercer
 *         self.cls = cls
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":214
 * 
 * cdef class CoercerMethod(DeserializationMethod):
 *     cdef readonly object coercer             # <<<<<<<<<<<<<<
 *     cdef readonly type cls
 *     cdef readonly DeserializationMethod method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7coercer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7coercer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_7coercer___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __pyx_r = __pyx_v_self->coercer;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":215
 * cdef class CoercerMethod(DeserializationMethod):
 *     cdef readonly object coercer
 *     cdef readonly type cls             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3cls_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3cls_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_3cls___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->cls));
  __pyx_r = ((PyObject *)__pyx_v_self->cls);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":216
 *     cdef readonly object coercer
 *     cdef readonly type cls
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.coercer, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->cls));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cls));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->cls));
  __Pyx_INCREF(__pyx_v_self->coercer);
  __Pyx_GIVEREF(__pyx_v_self->coercer);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->coercer);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_self->method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.coercer, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.coercer, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None or self.coercer is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.coercer, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None or self.coercer is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->cls != ((PyTypeObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->coercer != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.coercer is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None or self.coercer is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_CoercerMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_261406006);
    __Pyx_GIVEREF(__pyx_int_261406006);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_261406006);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.coercer is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, None), state
 *     else:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_CoercerMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_CoercerMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_261406006);
    __Pyx_GIVEREF(__pyx_int_261406006);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_261406006);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_CoercerMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13CoercerMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_CoercerMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_CoercerMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_CoercerMethod, (type(self), 0xf94bd36, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_CoercerMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":231
 *     cdef readonly DeserializationMethod fallback
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return TypeCheckMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":232
 * 
 *     cpdef deserialize(self, object data):
 *         return TypeCheckMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, expected, fallback):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_TypeCheckMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":231
 *     cdef readonly DeserializationMethod fallback
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return TypeCheckMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":234
 *         return TypeCheckMethod_deserialize(self, data)
 * 
 *     def __init__(self, expected, fallback):             # <<<<<<<<<<<<<<
 *         self.expected = expected
 *         self.fallback = fallback
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_expected = 0;
  PyObject *__pyx_v_fallback = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_expected,&__pyx_n_s_fallback,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_expected)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fallback)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 234, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 234, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_expected = values[0];
    __pyx_v_fallback = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 234, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self), __pyx_v_expected, __pyx_v_fallback);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_expected, PyObject *__pyx_v_fallback) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":235
 * 
 *     def __init__(self, expected, fallback):
 *         self.expected = expected             # <<<<<<<<<<<<<<
 *         self.fallback = fallback
 *         self._dispatch = 3
 */
  __Pyx_INCREF(__pyx_v_expected);
  __Pyx_GIVEREF(__pyx_v_expected);
  __Pyx_GOTREF(__pyx_v_self->expected);
  __Pyx_DECREF(__pyx_v_self->expected);
  __pyx_v_self->expected = __pyx_v_expected;

  /* "apischema/deserialization/methods.pyx":236
 *     def __init__(self, expected, fallback):
 *         self.expected = expected
 *         self.fallback = fallback             # <<<<<<<<<<<<<<
 *         self._dispatch = 3
 * 
 */
  if (!(likely(((__pyx_v_fallback) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fallback, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 236, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_fallback;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->fallback);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->fallback));
  __pyx_v_self->fallback = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":237
 *         self.expected = expected
 *         self.fallback = fallback
 *         self._dispatch = 3             # <<<<<<<<<<<<<<
 * 
 * cdef class AnyMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 3;

  /* "apischema/deserialization/methods.pyx":234
 *         return TypeCheckMethod_deserialize(self, data)
 * 
 *     def __init__(self, expected, fallback):             # <<<<<<<<<<<<<<
 *         self.expected = expected
 *         self.fallback = fallback
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":228
 * 
 * cdef class TypeCheckMethod(DeserializationMethod):
 *     cdef readonly object expected             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod fallback
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->expected);
  __pyx_r = __pyx_v_self->expected;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":229
 * cdef class TypeCheckMethod(DeserializationMethod):
 *     cdef readonly object expected
 *     cdef readonly DeserializationMethod fallback             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->fallback));
  __pyx_r = ((PyObject *)__pyx_v_self->fallback);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.expected, self.fallback)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->expected);
  __Pyx_GIVEREF(__pyx_v_self->expected);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->expected);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->fallback));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->fallback));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->fallback));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.expected, self.fallback)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.expected, self.fallback)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.expected is not None or self.fallback is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.expected, self.fallback)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.expected is not None or self.fallback is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->expected != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->fallback) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.expected is not None or self.fallback is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.expected is not None or self.fallback is not None
 *     if use_setstate:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_TypeCheckMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_43145208);
    __Pyx_GIVEREF(__pyx_int_43145208);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_43145208);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.expected is not None or self.fallback is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, None), state
 *     else:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_TypeCheckMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_TypeCheckMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_43145208);
    __Pyx_GIVEREF(__pyx_int_43145208);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_43145208);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_TypeCheckMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15TypeCheckMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_TypeCheckMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TypeCheckMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_TypeCheckMethod, (type(self), 0x29257f8, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_TypeCheckMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":242
 *     cdef readonly dict constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return AnyMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":243
 * 
 *     cpdef deserialize(self, object data):
 *         return AnyMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_AnyMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":242
 *     cdef readonly dict constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return AnyMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_9AnyMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":245
 *         return AnyMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 4
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 245, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_constraints = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 245, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self), __pyx_v_constraints);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_constraints) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":246
 * 
 *     def __init__(self, constraints):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self._dispatch = 4
 * 
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 246, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":247
 *     def __init__(self, constraints):
 *         self.constraints = constraints
 *         self._dispatch = 4             # <<<<<<<<<<<<<<
 * 
 * cdef class ListCheckOnlyMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 4;

  /* "apischema/deserialization/methods.pyx":245
 *         return AnyMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 4
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":240
 * 
 * cdef class AnyMethod(DeserializationMethod):
 *     cdef readonly dict constraints             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None
 *     if use_setstate:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_AnyMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, None), state
 *     else:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AnyMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_AnyMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AnyMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9AnyMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AnyMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AnyMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AnyMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AnyMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":253
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ListCheckOnlyMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":254
 * 
 *     cpdef deserialize(self, object data):
 *         return ListCheckOnlyMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, value_method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ListCheckOnlyMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":253
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ListCheckOnlyMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":256
 *         return ListCheckOnlyMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_value_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_value_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 256, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 256, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_value_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 256, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self), __pyx_v_constraints, __pyx_v_value_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":257
 * 
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self._dispatch = 5
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 257, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":258
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self._dispatch = 5
 * 
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 258, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":259
 *         self.constraints = constraints
 *         self.value_method = value_method
 *         self._dispatch = 5             # <<<<<<<<<<<<<<
 * 
 * cdef class ListMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 5;

  /* "apischema/deserialization/methods.pyx":256
 *         return ListCheckOnlyMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":250
 * 
 * cdef class ListCheckOnlyMethod(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":251
 * cdef class ListCheckOnlyMethod(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ListCheckOnlyMeth); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, None), state
 *     else:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ListCheckOnlyMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ListCheckOnlyMeth); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ListCheckOnlyMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ListCheckOnlyMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListCheckOnlyMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ListCheckOnlyMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ListCheckOnlyMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":265
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ListMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":266
 * 
 *     cpdef deserialize(self, object data):
 *         return ListMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, value_method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ListMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":265
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ListMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_10ListMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":268
 *         return ListMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_10ListMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_10ListMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_value_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_value_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 268, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 268, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_value_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 268, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self), __pyx_v_constraints, __pyx_v_value_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":269
 * 
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self._dispatch = 6
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 269, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":270
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self._dispatch = 6
 * 
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 270, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":271
 *         self.constraints = constraints
 *         self.value_method = value_method
 *         self._dispatch = 6             # <<<<<<<<<<<<<<
 * 
 * cdef class SetMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 6;

  /* "apischema/deserialization/methods.pyx":268
 *         return ListMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":262
 * 
 * cdef class ListMethod(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":263
 * cdef class ListMethod(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ListMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, None), state
 *     else:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ListMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ListMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ListMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10ListMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10ListMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ListMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ListMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ListMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":277
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SetMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":278
 * 
 *     cpdef deserialize(self, object data):
 *         return SetMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, value_method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_SetMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":277
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SetMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_9SetMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":280
 *         return SetMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_9SetMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_9SetMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_value_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_value_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 280, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 280, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_value_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 280, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self), __pyx_v_constraints, __pyx_v_value_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_value_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":281
 * 
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self._dispatch = 7
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 281, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":282
 *     def __init__(self, constraints, value_method):
 *         self.constraints = constraints
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self._dispatch = 7
 * 
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 282, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":283
 *         self.constraints = constraints
 *         self.value_method = value_method
 *         self._dispatch = 7             # <<<<<<<<<<<<<<
 * 
 * cdef class VariadicTupleMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 7;

  /* "apischema/deserialization/methods.pyx":280
 *         return SetMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.value_method = value_method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":274
 * 
 * cdef class SetMethod(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":275
 * cdef class SetMethod(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_SetMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, None), state
 *     else:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SetMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_SetMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_241521041);
    __Pyx_GIVEREF(__pyx_int_241521041);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_241521041);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SetMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9SetMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9SetMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SetMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SetMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SetMethod, (type(self), 0xe655191, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SetMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":288
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return VariadicTupleMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":289
 * 
 *     cpdef deserialize(self, object data):
 *         return VariadicTupleMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_VariadicTupleMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":288
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return VariadicTupleMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":291
 *         return VariadicTupleMethod_deserialize(self, data)
 * 
 *     def __init__(self, method):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 8
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 291, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_method = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 291, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self), __pyx_v_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":292
 * 
 *     def __init__(self, method):
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self._dispatch = 8
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 292, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":293
 *     def __init__(self, method):
 *         self.method = method
 *         self._dispatch = 8             # <<<<<<<<<<<<<<
 * 
 * cdef class LiteralMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 8;

  /* "apischema/deserialization/methods.pyx":291
 *         return VariadicTupleMethod_deserialize(self, data)
 * 
 *     def __init__(self, method):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 8
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":286
 * 
 * cdef class VariadicTupleMethod(DeserializationMethod):
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, None), state
 */
  /*else*/ {
    __pyx_t_4 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_VariadicTupleMeth); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_179286492);
    __Pyx_GIVEREF(__pyx_int_179286492);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_179286492);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, None), state
 *     else:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_VariadicTupleMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_VariadicTupleMeth); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_179286492);
    __Pyx_GIVEREF(__pyx_int_179286492);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_179286492);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VariadicTupleMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19VariadicTupleMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_VariadicTupleMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_VariadicTupleMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_VariadicTupleMethod, (type(self), 0xaafb1dc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VariadicTupleMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":301
 *     cdef readonly tuple types
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return LiteralMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":302
 * 
 *     cpdef deserialize(self, object data):
 *         return LiteralMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, value_map, error, coercer, types):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_LiteralMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":301
 *     cdef readonly tuple types
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return LiteralMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_13LiteralMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":304
 *         return LiteralMethod_deserialize(self, data)
 * 
 *     def __init__(self, value_map, error, coercer, types):             # <<<<<<<<<<<<<<
 *         self.value_map = value_map
 *         self.error = error
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_value_map = 0;
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_coercer = 0;
  PyObject *__pyx_v_types = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value_map,&__pyx_n_s_error,&__pyx_n_s_coercer,&__pyx_n_s_types,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_map)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coercer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 304, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 304, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_value_map = values[0];
    __pyx_v_error = values[1];
    __pyx_v_coercer = values[2];
    __pyx_v_types = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 304, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self), __pyx_v_value_map, __pyx_v_error, __pyx_v_coercer, __pyx_v_types);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_value_map, PyObject *__pyx_v_error, PyObject *__pyx_v_coercer, PyObject *__pyx_v_types) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":305
 * 
 *     def __init__(self, value_map, error, coercer, types):
 *         self.value_map = value_map             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self.coercer = coercer
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_value_map))||((__pyx_v_value_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value_map)->tp_name), 0))) __PYX_ERR(0, 305, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_map;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_map);
  __Pyx_DECREF(__pyx_v_self->value_map);
  __pyx_v_self->value_map = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":306
 *     def __init__(self, value_map, error, coercer, types):
 *         self.value_map = value_map
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self.coercer = coercer
 *         self.types = types
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->error);
  __Pyx_DECREF(__pyx_v_self->error);
  __pyx_v_self->error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":307
 *         self.value_map = value_map
 *         self.error = error
 *         self.coercer = coercer             # <<<<<<<<<<<<<<
 *         self.types = types
 *         self._dispatch = 9
 */
  __Pyx_INCREF(__pyx_v_coercer);
  __Pyx_GIVEREF(__pyx_v_coercer);
  __Pyx_GOTREF(__pyx_v_self->coercer);
  __Pyx_DECREF(__pyx_v_self->coercer);
  __pyx_v_self->coercer = __pyx_v_coercer;

  /* "apischema/deserialization/methods.pyx":308
 *         self.error = error
 *         self.coercer = coercer
 *         self.types = types             # <<<<<<<<<<<<<<
 *         self._dispatch = 9
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_types))||((__pyx_v_types) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_types)->tp_name), 0))) __PYX_ERR(0, 308, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_types;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->types);
  __Pyx_DECREF(__pyx_v_self->types);
  __pyx_v_self->types = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":309
 *         self.coercer = coercer
 *         self.types = types
 *         self._dispatch = 9             # <<<<<<<<<<<<<<
 * 
 * cdef class MappingCheckOnly(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 9;

  /* "apischema/deserialization/methods.pyx":304
 *         return LiteralMethod_deserialize(self, data)
 * 
 *     def __init__(self, value_map, error, coercer, types):             # <<<<<<<<<<<<<<
 *         self.value_map = value_map
 *         self.error = error
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":296
 * 
 * cdef class LiteralMethod(DeserializationMethod):
 *     cdef readonly dict value_map             # <<<<<<<<<<<<<<
 *     cdef readonly object error
 *     cdef readonly object coercer
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_9value_map_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_9value_map_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_9value_map___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_9value_map___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->value_map);
  __pyx_r = __pyx_v_self->value_map;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":297
 * cdef class LiteralMethod(DeserializationMethod):
 *     cdef readonly dict value_map
 *     cdef readonly object error             # <<<<<<<<<<<<<<
 *     cdef readonly object coercer
 *     cdef readonly tuple types
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->error);
  __pyx_r = __pyx_v_self->error;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":298
 *     cdef readonly dict value_map
 *     cdef readonly object error
 *     cdef readonly object coercer             # <<<<<<<<<<<<<<
 *     cdef readonly tuple types
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7coercer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7coercer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_7coercer___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __pyx_r = __pyx_v_self->coercer;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":299
 *     cdef readonly object error
 *     cdef readonly object coercer
 *     cdef readonly tuple types             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5types_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5types_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5types___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_5types___get__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->types);
  __pyx_r = __pyx_v_self->types;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.coercer, self.error, self.types, self.value_map)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __Pyx_GIVEREF(__pyx_v_self->coercer);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->coercer);
  __Pyx_INCREF(__pyx_v_self->error);
  __Pyx_GIVEREF(__pyx_v_self->error);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->error);
  __Pyx_INCREF(__pyx_v_self->types);
  __Pyx_GIVEREF(__pyx_v_self->types);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->types);
  __Pyx_INCREF(__pyx_v_self->value_map);
  __Pyx_GIVEREF(__pyx_v_self->value_map);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->value_map);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.coercer, self.error, self.types, self.value_map)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.coercer, self.error, self.types, self.value_map)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.coercer is not None or self.error is not None or self.types is not None or self.value_map is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.coercer, self.error, self.types, self.value_map)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.coercer is not None or self.error is not None or self.types is not None or self.value_map is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->coercer != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->error != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->types != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->value_map != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.coercer is not None or self.error is not None or self.types is not None or self.value_map is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.coercer is not None or self.error is not None or self.types is not None or self.value_map is not None
 *     if use_setstate:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_LiteralMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119633667);
    __Pyx_GIVEREF(__pyx_int_119633667);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119633667);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.coercer is not None or self.error is not None or self.types is not None or self.value_map is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, None), state
 *     else:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_LiteralMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_LiteralMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119633667);
    __Pyx_GIVEREF(__pyx_int_119633667);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119633667);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_LiteralMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13LiteralMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_LiteralMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_LiteralMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_LiteralMethod, (type(self), 0x7217703, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_LiteralMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":316
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return MappingCheckOnly_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":317
 * 
 *     cpdef deserialize(self, object data):
 *         return MappingCheckOnly_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, key_method, value_method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MappingCheckOnly_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":316
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return MappingCheckOnly_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":319
 *         return MappingCheckOnly_deserialize(self, data)
 * 
 *     def __init__(self, constraints, key_method, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.key_method = key_method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_key_method = 0;
  PyObject *__pyx_v_value_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_key_method,&__pyx_n_s_value_method,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 319, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 319, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 319, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_key_method = values[1];
    __pyx_v_value_method = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 319, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self), __pyx_v_constraints, __pyx_v_key_method, __pyx_v_value_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_key_method, PyObject *__pyx_v_value_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":320
 * 
 *     def __init__(self, constraints, key_method, value_method):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.key_method = key_method
 *         self.value_method = value_method
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 320, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":321
 *     def __init__(self, constraints, key_method, value_method):
 *         self.constraints = constraints
 *         self.key_method = key_method             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self._dispatch = 10
 */
  if (!(likely(((__pyx_v_key_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_key_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 321, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_key_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->key_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->key_method));
  __pyx_v_self->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":322
 *         self.constraints = constraints
 *         self.key_method = key_method
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self._dispatch = 10
 * 
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 322, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":323
 *         self.key_method = key_method
 *         self.value_method = value_method
 *         self._dispatch = 10             # <<<<<<<<<<<<<<
 * 
 * cdef class MappingMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 10;

  /* "apischema/deserialization/methods.pyx":319
 *         return MappingCheckOnly_deserialize(self, data)
 * 
 *     def __init__(self, constraints, key_method, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.key_method = key_method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":312
 * 
 * cdef class MappingCheckOnly(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod key_method
 *     cdef readonly DeserializationMethod value_method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":313
 * cdef class MappingCheckOnly(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->key_method));
  __pyx_r = ((PyObject *)__pyx_v_self->key_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":314
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->key_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->key_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->key_method));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->key_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MappingCheckOnly); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119948357);
    __Pyx_GIVEREF(__pyx_int_119948357);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119948357);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, None), state
 *     else:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MappingCheckOnly__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_MappingCheckOnly); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119948357);
    __Pyx_GIVEREF(__pyx_int_119948357);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119948357);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MappingCheckOnly__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16MappingCheckOnly_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MappingCheckOnly__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingCheckOnly__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MappingCheckOnly, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MappingCheckOnly__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":330
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return MappingMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":331
 * 
 *     cpdef deserialize(self, object data):
 *         return MappingMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, key_method, value_method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_MappingMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":330
 *     cdef readonly DeserializationMethod value_method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return MappingMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_13MappingMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":333
 *         return MappingMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, key_method, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.key_method = key_method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_key_method = 0;
  PyObject *__pyx_v_value_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_key_method,&__pyx_n_s_value_method,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 333, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 333, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 333, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_key_method = values[1];
    __pyx_v_value_method = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 333, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self), __pyx_v_constraints, __pyx_v_key_method, __pyx_v_value_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_key_method, PyObject *__pyx_v_value_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":334
 * 
 *     def __init__(self, constraints, key_method, value_method):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.key_method = key_method
 *         self.value_method = value_method
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 334, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":335
 *     def __init__(self, constraints, key_method, value_method):
 *         self.constraints = constraints
 *         self.key_method = key_method             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self._dispatch = 11
 */
  if (!(likely(((__pyx_v_key_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_key_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 335, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_key_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->key_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->key_method));
  __pyx_v_self->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":336
 *         self.constraints = constraints
 *         self.key_method = key_method
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self._dispatch = 11
 * 
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 336, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":337
 *         self.key_method = key_method
 *         self.value_method = value_method
 *         self._dispatch = 11             # <<<<<<<<<<<<<<
 * 
 * cdef class Field():
 */
  __pyx_v_self->__pyx_base._dispatch = 11;

  /* "apischema/deserialization/methods.pyx":333
 *         return MappingMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, key_method, value_method):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.key_method = key_method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":326
 * 
 * cdef class MappingMethod(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod key_method
 *     cdef readonly DeserializationMethod value_method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":327
 * cdef class MappingMethod(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod value_method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_10key_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_10key_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_10key_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_10key_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->key_method));
  __pyx_r = ((PyObject *)__pyx_v_self->key_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":328
 *     cdef readonly tuple constraints
 *     cdef readonly DeserializationMethod key_method
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->key_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->key_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->key_method));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.key_method, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->key_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_MappingMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119948357);
    __Pyx_GIVEREF(__pyx_int_119948357);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119948357);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.key_method is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, None), state
 *     else:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MappingMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_MappingMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119948357);
    __Pyx_GIVEREF(__pyx_int_119948357);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119948357);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MappingMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13MappingMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_MappingMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_MappingMethod, (type(self), 0x7264445, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_MappingMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":347
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, alias, method, required, required_by, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.alias = alias
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_5Field_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_5Field_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_alias = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_required = 0;
  PyObject *__pyx_v_required_by = 0;
  PyObject *__pyx_v_fall_back_on_default = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_alias,&__pyx_n_s_method,&__pyx_n_s_required,&__pyx_n_s_required_by,&__pyx_n_s_fall_back_on_default,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_alias)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(0, 347, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(0, 347, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_required)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(0, 347, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_required_by)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(0, 347, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fall_back_on_default)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(0, 347, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_name = values[0];
    __pyx_v_alias = values[1];
    __pyx_v_method = values[2];
    __pyx_v_required = values[3];
    __pyx_v_required_by = values[4];
    __pyx_v_fall_back_on_default = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self), __pyx_v_name, __pyx_v_alias, __pyx_v_method, __pyx_v_required, __pyx_v_required_by, __pyx_v_fall_back_on_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_5Field___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_alias, PyObject *__pyx_v_method, PyObject *__pyx_v_required, PyObject *__pyx_v_required_by, PyObject *__pyx_v_fall_back_on_default) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":348
 * 
 *     def __init__(self, name, alias, method, required, required_by, fall_back_on_default):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.alias = alias
 *         self.method = method
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 348, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":349
 *     def __init__(self, name, alias, method, required, required_by, fall_back_on_default):
 *         self.name = name
 *         self.alias = alias             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.required = required
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_alias))||((__pyx_v_alias) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_alias)->tp_name), 0))) __PYX_ERR(0, 349, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_alias;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->alias);
  __Pyx_DECREF(__pyx_v_self->alias);
  __pyx_v_self->alias = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":350
 *         self.name = name
 *         self.alias = alias
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.required = required
 *         self.required_by = required_by
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 350, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":351
 *         self.alias = alias
 *         self.method = method
 *         self.required = required             # <<<<<<<<<<<<<<
 *         self.required_by = required_by
 *         self.fall_back_on_default = fall_back_on_default
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_required); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error)
  __pyx_v_self->required = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":352
 *         self.method = method
 *         self.required = required
 *         self.required_by = required_by             # <<<<<<<<<<<<<<
 *         self.fall_back_on_default = fall_back_on_default
 * 
 */
  __Pyx_INCREF(__pyx_v_required_by);
  __Pyx_GIVEREF(__pyx_v_required_by);
  __Pyx_GOTREF(__pyx_v_self->required_by);
  __Pyx_DECREF(__pyx_v_self->required_by);
  __pyx_v_self->required_by = __pyx_v_required_by;

  /* "apischema/deserialization/methods.pyx":353
 *         self.required = required
 *         self.required_by = required_by
 *         self.fall_back_on_default = fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 * cdef class FlattenedField():
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fall_back_on_default); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 353, __pyx_L1_error)
  __pyx_v_self->fall_back_on_default = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":347
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, alias, method, required, required_by, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.alias = alias
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":340
 * 
 * cdef class Field():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly str alias
 *     cdef readonly DeserializationMethod method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":341
 * cdef class Field():
 *     cdef readonly str name
 *     cdef readonly str alias             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint required
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_5alias_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_5alias_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_5alias___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_5alias___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->alias);
  __pyx_r = __pyx_v_self->alias;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":342
 *     cdef readonly str name
 *     cdef readonly str alias
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly bint required
 *     cdef readonly object required_by
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":343
 *     cdef readonly str alias
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint required             # <<<<<<<<<<<<<<
 *     cdef readonly object required_by
 *     cdef readonly bint fall_back_on_default
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_8required_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_8required_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_8required___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_8required___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->required); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.required.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":344
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint required
 *     cdef readonly object required_by             # <<<<<<<<<<<<<<
 *     cdef readonly bint fall_back_on_default
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_11required_by_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_11required_by_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_11required_by___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_11required_by___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->required_by);
  __pyx_r = __pyx_v_self->required_by;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":345
 *     cdef readonly bint required
 *     cdef readonly object required_by
 *     cdef readonly bint fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, alias, method, required, required_by, fall_back_on_default):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_20fall_back_on_default_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_20fall_back_on_default_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_20fall_back_on_default___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.fall_back_on_default.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.alias, self.fall_back_on_default, self.method, self.name, self.required, self.required_by)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->required); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self->alias);
  __Pyx_GIVEREF(__pyx_v_self->alias);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->alias);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_self->method));
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->required_by);
  __Pyx_GIVEREF(__pyx_v_self->required_by);
  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_self->required_by);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.alias, self.fall_back_on_default, self.method, self.name, self.required, self.required_by)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self.alias, self.fall_back_on_default, self.method, self.name, self.required, self.required_by)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.alias is not None or self.method is not None or self.name is not None or self.required_by is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.alias, self.fall_back_on_default, self.method, self.name, self.required, self.required_by)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.alias is not None or self.method is not None or self.name is not None or self.required_by is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->alias != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_4 = (__pyx_t_6 != 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_5 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->required_by != Py_None);
    __pyx_t_4 = (__pyx_t_6 != 0);
    __pyx_t_5 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alias is not None or self.method is not None or self.name is not None or self.required_by is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.alias is not None or self.method is not None or self.name is not None or self.required_by is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Field); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_228146014);
    __Pyx_GIVEREF(__pyx_int_228146014);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228146014);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alias is not None or self.method is not None or self.name is not None or self.required_by is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, None), state
 *     else:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Field__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Field); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_228146014);
    __Pyx_GIVEREF(__pyx_int_228146014);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228146014);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Field__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5Field_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_5Field_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_5Field_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Field__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Field__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Field, (type(self), 0xd993b5e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Field__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Field.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":361
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, aliases, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.aliases = aliases
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_aliases = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_fall_back_on_default = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_aliases,&__pyx_n_s_method,&__pyx_n_s_fall_back_on_default,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_aliases)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 361, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 361, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fall_back_on_default)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 361, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 361, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_name = values[0];
    __pyx_v_aliases = values[1];
    __pyx_v_method = values[2];
    __pyx_v_fall_back_on_default = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 361, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.FlattenedField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self), __pyx_v_name, __pyx_v_aliases, __pyx_v_method, __pyx_v_fall_back_on_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_aliases, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":362
 * 
 *     def __init__(self, name, aliases, method, fall_back_on_default):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.aliases = aliases
 *         self.method = method
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 362, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":363
 *     def __init__(self, name, aliases, method, fall_back_on_default):
 *         self.name = name
 *         self.aliases = aliases             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_aliases))||((__pyx_v_aliases) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_aliases)->tp_name), 0))) __PYX_ERR(0, 363, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_aliases;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->aliases);
  __Pyx_DECREF(__pyx_v_self->aliases);
  __pyx_v_self->aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":364
 *         self.name = name
 *         self.aliases = aliases
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.fall_back_on_default = fall_back_on_default
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 364, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":365
 *         self.aliases = aliases
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 * cdef class PatternField():
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fall_back_on_default); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 365, __pyx_L1_error)
  __pyx_v_self->fall_back_on_default = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":361
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, aliases, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.aliases = aliases
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FlattenedField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":356
 * 
 * cdef class FlattenedField():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly tuple aliases
 *     cdef readonly DeserializationMethod method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":357
 * cdef class FlattenedField():
 *     cdef readonly str name
 *     cdef readonly tuple aliases             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_7aliases_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_7aliases_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_7aliases___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_7aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->aliases);
  __pyx_r = __pyx_v_self->aliases;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":358
 *     cdef readonly str name
 *     cdef readonly tuple aliases
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly bint fall_back_on_default
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":359
 *     cdef readonly tuple aliases
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, aliases, method, fall_back_on_default):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FlattenedField.fall_back_on_default.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.aliases, self.fall_back_on_default, self.method, self.name)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->aliases);
  __Pyx_GIVEREF(__pyx_v_self->aliases);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->aliases);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->method));
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->name);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.aliases, self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self.aliases, self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.aliases is not None or self.method is not None or self.name is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.aliases, self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.aliases is not None or self.method is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->aliases != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.aliases is not None or self.method is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.aliases is not None or self.method is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_FlattenedField); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_217540299);
    __Pyx_GIVEREF(__pyx_int_217540299);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_217540299);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.aliases is not None or self.method is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, None), state
 *     else:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FlattenedField__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_FlattenedField); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_217540299);
    __Pyx_GIVEREF(__pyx_int_217540299);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_217540299);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.FlattenedField.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FlattenedField__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14FlattenedField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FlattenedField__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FlattenedField__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FlattenedField, (type(self), 0xcf766cb, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FlattenedField__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FlattenedField.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":373
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, pattern, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.pattern = pattern
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_12PatternField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_12PatternField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_pattern = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_fall_back_on_default = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_pattern,&__pyx_n_s_method,&__pyx_n_s_fall_back_on_default,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 373, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 373, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fall_back_on_default)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 373, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 373, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_name = values[0];
    __pyx_v_pattern = values[1];
    __pyx_v_method = values[2];
    __pyx_v_fall_back_on_default = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 373, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self), __pyx_v_name, __pyx_v_pattern, __pyx_v_method, __pyx_v_fall_back_on_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_12PatternField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_pattern, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":374
 * 
 *     def __init__(self, name, pattern, method, fall_back_on_default):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.pattern = pattern
 *         self.method = method
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 374, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":375
 *     def __init__(self, name, pattern, method, fall_back_on_default):
 *         self.name = name
 *         self.pattern = pattern             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default
 */
  __Pyx_INCREF(__pyx_v_pattern);
  __Pyx_GIVEREF(__pyx_v_pattern);
  __Pyx_GOTREF(__pyx_v_self->pattern);
  __Pyx_DECREF(__pyx_v_self->pattern);
  __pyx_v_self->pattern = __pyx_v_pattern;

  /* "apischema/deserialization/methods.pyx":376
 *         self.name = name
 *         self.pattern = pattern
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.fall_back_on_default = fall_back_on_default
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 376, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":377
 *         self.pattern = pattern
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 * cdef class AdditionalField():
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fall_back_on_default); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 377, __pyx_L1_error)
  __pyx_v_self->fall_back_on_default = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":373
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, pattern, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.pattern = pattern
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":368
 * 
 * cdef class PatternField():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly object pattern
 *     cdef readonly DeserializationMethod method
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":369
 * cdef class PatternField():
 *     cdef readonly str name
 *     cdef readonly object pattern             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_7pattern_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_7pattern_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_7pattern___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_7pattern___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->pattern);
  __pyx_r = __pyx_v_self->pattern;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":370
 *     cdef readonly str name
 *     cdef readonly object pattern
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly bint fall_back_on_default
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":371
 *     cdef readonly object pattern
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, pattern, method, fall_back_on_default):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternField.fall_back_on_default.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.fall_back_on_default, self.method, self.name, self.pattern)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->method));
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->name);
  __Pyx_INCREF(__pyx_v_self->pattern);
  __Pyx_GIVEREF(__pyx_v_self->pattern);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->pattern);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.fall_back_on_default, self.method, self.name, self.pattern)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self.fall_back_on_default, self.method, self.name, self.pattern)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.method is not None or self.name is not None or self.pattern is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.fall_back_on_default, self.method, self.name, self.pattern)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.method is not None or self.name is not None or self.pattern is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, None), state
 */
  /*else*/ {
    __pyx_t_3 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->pattern != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None or self.name is not None or self.pattern is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.method is not None or self.name is not None or self.pattern is not None
 *     if use_setstate:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_PatternField); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_188265286);
    __Pyx_GIVEREF(__pyx_int_188265286);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_188265286);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None or self.name is not None or self.pattern is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, None), state
 *     else:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PatternField__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_PatternField); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_188265286);
    __Pyx_GIVEREF(__pyx_int_188265286);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_188265286);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternField.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PatternField__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12PatternField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12PatternField_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12PatternField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PatternField__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternField__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PatternField, (type(self), 0xb38b346, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PatternField__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternField.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":384
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.method = method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_fall_back_on_default = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_method,&__pyx_n_s_fall_back_on_default,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 384, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fall_back_on_default)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 384, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 384, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_method = values[1];
    __pyx_v_fall_back_on_default = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 384, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.AdditionalField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self), __pyx_v_name, __pyx_v_method, __pyx_v_fall_back_on_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_method, PyObject *__pyx_v_fall_back_on_default) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":385
 * 
 *     def __init__(self, name, method, fall_back_on_default):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 385, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":386
 *     def __init__(self, name, method, fall_back_on_default):
 *         self.name = name
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.fall_back_on_default = fall_back_on_default
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 386, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":387
 *         self.name = name
 *         self.method = method
 *         self.fall_back_on_default = fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 * cdef class Constructor():
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fall_back_on_default); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 387, __pyx_L1_error)
  __pyx_v_self->fall_back_on_default = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":384
 *     cdef readonly bint fall_back_on_default
 * 
 *     def __init__(self, name, method, fall_back_on_default):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.method = method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AdditionalField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":380
 * 
 * cdef class AdditionalField():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":381
 * cdef class AdditionalField():
 *     cdef readonly str name
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly bint fall_back_on_default
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":382
 *     cdef readonly str name
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint fall_back_on_default             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, method, fall_back_on_default):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default___get__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AdditionalField.fall_back_on_default.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.fall_back_on_default, self.method, self.name)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fall_back_on_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->method));
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->name);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.method is not None or self.name is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.fall_back_on_default, self.method, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.method is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, None), state
 */
  /*else*/ {
    __pyx_t_3 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.method is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_AdditionalField); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_153188860);
    __Pyx_GIVEREF(__pyx_int_153188860);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_153188860);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, None), state
 *     else:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AdditionalField__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_AdditionalField); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_153188860);
    __Pyx_GIVEREF(__pyx_int_153188860);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_153188860);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.AdditionalField.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AdditionalField__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_15AdditionalField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AdditionalField__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AdditionalField__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AdditionalField, (type(self), 0x92179fc, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AdditionalField__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.AdditionalField.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":393
 *     cdef int _dispatch
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_11Constructor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_11Constructor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 393, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cls = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 393, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.Constructor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11Constructor___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_v_self), __pyx_v_cls);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_11Constructor___init__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self, PyObject *__pyx_v_cls) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":394
 * 
 *     def __init__(self, cls):
 *         self.cls = cls             # <<<<<<<<<<<<<<
 * 
 * cdef class NoConstructor(Constructor):
 */
  __Pyx_INCREF(__pyx_v_cls);
  __Pyx_GIVEREF(__pyx_v_cls);
  __Pyx_GOTREF(__pyx_v_self->cls);
  __Pyx_DECREF(__pyx_v_self->cls);
  __pyx_v_self->cls = __pyx_v_cls;

  /* "apischema/deserialization/methods.pyx":393
 *     cdef int _dispatch
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":390
 * 
 * cdef class Constructor():
 *     cdef readonly object cls             # <<<<<<<<<<<<<<
 *     cdef int _dispatch
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_3cls_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_3cls_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11Constructor_3cls___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->cls);
  __pyx_r = __pyx_v_self->cls;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11Constructor_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->cls);
  __Pyx_GIVEREF(__pyx_v_self->cls);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->cls);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->cls != Py_None);
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Constructor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, None), state
 *     else:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Constructor__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Constructor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constructor.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Constructor__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11Constructor_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11Constructor_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11Constructor_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Constructor__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constructor__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Constructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Constructor__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constructor.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":398
 * cdef class NoConstructor(Constructor):
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return NoConstructor_construct(self, fields)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_13NoConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_1construct)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_fields) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fields);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 398, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":399
 * 
 *     cpdef construct(self, dict fields):
 *         return NoConstructor_construct(self, fields)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, cls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_NoConstructor_construct(__pyx_v_self, __pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":398
 * cdef class NoConstructor(Constructor):
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return NoConstructor_construct(self, fields)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("construct (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fields), (&PyDict_Type), 1, "fields", 1))) __PYX_ERR(0, 398, __pyx_L1_error)
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v_self), ((PyObject*)__pyx_v_fields));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_13NoConstructor_construct(__pyx_v_self, __pyx_v_fields, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":401
 *         return NoConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self._dispatch = 0
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 401, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cls = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 401, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.NoConstructor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v_self), __pyx_v_cls);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_cls) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":402
 * 
 *     def __init__(self, cls):
 *         self.cls = cls             # <<<<<<<<<<<<<<
 *         self._dispatch = 0
 * 
 */
  __Pyx_INCREF(__pyx_v_cls);
  __Pyx_GIVEREF(__pyx_v_cls);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.cls);
  __pyx_v_self->__pyx_base.cls = __pyx_v_cls;

  /* "apischema/deserialization/methods.pyx":403
 *     def __init__(self, cls):
 *         self.cls = cls
 *         self._dispatch = 0             # <<<<<<<<<<<<<<
 * 
 * cdef class RawConstructor(Constructor):
 */
  __pyx_v_self->__pyx_base._dispatch = 0;

  /* "apischema/deserialization/methods.pyx":401
 *         return NoConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self._dispatch = 0
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.cls);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->__pyx_base.cls);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->__pyx_base.cls != Py_None);
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None
 *     if use_setstate:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_NoConstructor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, None), state
 *     else:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_NoConstructor__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_NoConstructor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoConstructor.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_NoConstructor__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_13NoConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_NoConstructor__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoConstructor__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_NoConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_NoConstructor__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoConstructor.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":407
 * cdef class RawConstructor(Constructor):
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return RawConstructor_construct(self, fields)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_14RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_1construct)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_fields) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fields);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":408
 * 
 *     cpdef construct(self, dict fields):
 *         return RawConstructor_construct(self, fields)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, cls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_RawConstructor_construct(__pyx_v_self, __pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":407
 * cdef class RawConstructor(Constructor):
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return RawConstructor_construct(self, fields)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("construct (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fields), (&PyDict_Type), 1, "fields", 1))) __PYX_ERR(0, 407, __pyx_L1_error)
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v_self), ((PyObject*)__pyx_v_fields));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_14RawConstructor_construct(__pyx_v_self, __pyx_v_fields, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":410
 *         return RawConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self._dispatch = 1
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 410, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cls = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 410, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v_self), __pyx_v_cls);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_cls) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":411
 * 
 *     def __init__(self, cls):
 *         self.cls = cls             # <<<<<<<<<<<<<<
 *         self._dispatch = 1
 * 
 */
  __Pyx_INCREF(__pyx_v_cls);
  __Pyx_GIVEREF(__pyx_v_cls);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.cls);
  __pyx_v_self->__pyx_base.cls = __pyx_v_cls;

  /* "apischema/deserialization/methods.pyx":412
 *     def __init__(self, cls):
 *         self.cls = cls
 *         self._dispatch = 1             # <<<<<<<<<<<<<<
 * 
 * cdef class DefaultField():
 */
  __pyx_v_self->__pyx_base._dispatch = 1;

  /* "apischema/deserialization/methods.pyx":410
 *         return RawConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self._dispatch = 1
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.cls);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->__pyx_base.cls);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->__pyx_base.cls != Py_None);
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None
 *     if use_setstate:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_RawConstructor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, None), state
 *     else:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_RawConstructor__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_RawConstructor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_109504843);
    __Pyx_GIVEREF(__pyx_int_109504843);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_109504843);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_RawConstructor__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14RawConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_RawConstructor__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RawConstructor__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_RawConstructor, (type(self), 0x686e94b, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_RawConstructor__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":418
 *     cdef readonly object default_value
 * 
 *     def __init__(self, name, default_value):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.default_value = default_value
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_12DefaultField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_12DefaultField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_default_value = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_default_value,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default_value)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 418, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 418, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_default_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 418, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.DefaultField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12DefaultField___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v_self), __pyx_v_name, __pyx_v_default_value);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_12DefaultField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_default_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":419
 * 
 *     def __init__(self, name, default_value):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.default_value = default_value
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 419, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":420
 *     def __init__(self, name, default_value):
 *         self.name = name
 *         self.default_value = default_value             # <<<<<<<<<<<<<<
 * 
 * cdef class FactoryField():
 */
  __Pyx_INCREF(__pyx_v_default_value);
  __Pyx_GIVEREF(__pyx_v_default_value);
  __Pyx_GOTREF(__pyx_v_self->default_value);
  __Pyx_DECREF(__pyx_v_self->default_value);
  __pyx_v_self->default_value = __pyx_v_default_value;

  /* "apischema/deserialization/methods.pyx":418
 *     cdef readonly object default_value
 * 
 *     def __init__(self, name, default_value):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.default_value = default_value
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DefaultField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":415
 * 
 * cdef class DefaultField():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly object default_value
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":416
 * cdef class DefaultField():
 *     cdef readonly str name
 *     cdef readonly object default_value             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, default_value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_13default_value_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_13default_value_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12DefaultField_13default_value___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_13default_value___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->default_value);
  __pyx_r = __pyx_v_self->default_value;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12DefaultField_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.default_value, self.name)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->default_value);
  __Pyx_GIVEREF(__pyx_v_self->default_value);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->default_value);
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name);
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.default_value, self.name)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = (self.default_value, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.default_value is not None or self.name is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.default_value, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.default_value is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, None), state
 */
  /*else*/ {
    __pyx_t_2 = (__pyx_v_self->default_value != Py_None);
    __pyx_t_5 = (__pyx_t_2 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_3 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_2 = (__pyx_t_5 != 0);
    __pyx_t_3 = __pyx_t_2;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_3;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.default_value is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = self.default_value is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_DefaultField); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_151978152);
    __Pyx_GIVEREF(__pyx_int_151978152);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_151978152);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.default_value is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, None), state
 *     else:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DefaultField__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_DefaultField); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_151978152);
    __Pyx_GIVEREF(__pyx_int_151978152);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_151978152);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.DefaultField.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DefaultField__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12DefaultField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DefaultField__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DefaultField__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DefaultField, (type(self), 0x90f00a8, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DefaultField__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DefaultField.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":426
 *     cdef readonly object factory
 * 
 *     def __init__(self, name, factory):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.factory = factory
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_12FactoryField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_12FactoryField_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_factory = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_factory,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_factory)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 426, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_name = values[0];
    __pyx_v_factory = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 426, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.FactoryField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12FactoryField___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v_self), __pyx_v_name, __pyx_v_factory);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_12FactoryField___init__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_factory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":427
 * 
 *     def __init__(self, name, factory):
 *         self.name = name             # <<<<<<<<<<<<<<
 *         self.factory = factory
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 427, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":428
 *     def __init__(self, name, factory):
 *         self.name = name
 *         self.factory = factory             # <<<<<<<<<<<<<<
 * 
 * cdef class FieldsConstructor(Constructor):
 */
  __Pyx_INCREF(__pyx_v_factory);
  __Pyx_GIVEREF(__pyx_v_factory);
  __Pyx_GOTREF(__pyx_v_self->factory);
  __Pyx_DECREF(__pyx_v_self->factory);
  __pyx_v_self->factory = __pyx_v_factory;

  /* "apischema/deserialization/methods.pyx":426
 *     cdef readonly object factory
 * 
 *     def __init__(self, name, factory):             # <<<<<<<<<<<<<<
 *         self.name = name
 *         self.factory = factory
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FactoryField.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":423
 * 
 * cdef class FactoryField():
 *     cdef readonly str name             # <<<<<<<<<<<<<<
 *     cdef readonly object factory
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4name___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4name___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":424
 * cdef class FactoryField():
 *     cdef readonly str name
 *     cdef readonly object factory             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, name, factory):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_7factory_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_7factory_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12FactoryField_7factory___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_7factory___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->factory);
  __pyx_r = __pyx_v_self->factory;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12FactoryField_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.factory, self.name)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->factory);
  __Pyx_GIVEREF(__pyx_v_self->factory);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->factory);
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name);
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.factory, self.name)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = (self.factory, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.factory is not None or self.name is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.factory, self.name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.factory is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, None), state
 */
  /*else*/ {
    __pyx_t_2 = (__pyx_v_self->factory != Py_None);
    __pyx_t_5 = (__pyx_t_2 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_3 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_2 = (__pyx_t_5 != 0);
    __pyx_t_3 = __pyx_t_2;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_3;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.factory is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = self.factory is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_FactoryField); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_30346496);
    __Pyx_GIVEREF(__pyx_int_30346496);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_30346496);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.factory is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, None), state
 *     else:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FactoryField__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_FactoryField); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_30346496);
    __Pyx_GIVEREF(__pyx_int_30346496);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_30346496);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.FactoryField.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FactoryField__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12FactoryField_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FactoryField__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FactoryField__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FactoryField, (type(self), 0x1cf0d00, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FactoryField__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FactoryField.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":435
 *     cdef readonly tuple factory_fields
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return FieldsConstructor_construct(self, fields)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_fields, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_1construct)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_fields) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fields);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":436
 * 
 *     cpdef construct(self, dict fields):
 *         return FieldsConstructor_construct(self, fields)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, cls, nb_fields, default_fields, factory_fields):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_FieldsConstructor_construct(__pyx_v_self, __pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":435
 *     cdef readonly tuple factory_fields
 * 
 *     cpdef construct(self, dict fields):             # <<<<<<<<<<<<<<
 *         return FieldsConstructor_construct(self, fields)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_1construct(PyObject *__pyx_v_self, PyObject *__pyx_v_fields) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("construct (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fields), (&PyDict_Type), 1, "fields", 1))) __PYX_ERR(0, 435, __pyx_L1_error)
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self), ((PyObject*)__pyx_v_fields));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("construct", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_17FieldsConstructor_construct(__pyx_v_self, __pyx_v_fields, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":438
 *         return FieldsConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls, nb_fields, default_fields, factory_fields):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self.nb_fields = nb_fields
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_nb_fields = 0;
  PyObject *__pyx_v_default_fields = 0;
  PyObject *__pyx_v_factory_fields = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_nb_fields,&__pyx_n_s_default_fields,&__pyx_n_s_factory_fields,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nb_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 438, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 438, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_factory_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 438, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 438, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_cls = values[0];
    __pyx_v_nb_fields = values[1];
    __pyx_v_default_fields = values[2];
    __pyx_v_factory_fields = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 438, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self), __pyx_v_cls, __pyx_v_nb_fields, __pyx_v_default_fields, __pyx_v_factory_fields);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_nb_fields, PyObject *__pyx_v_default_fields, PyObject *__pyx_v_factory_fields) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":439
 * 
 *     def __init__(self, cls, nb_fields, default_fields, factory_fields):
 *         self.cls = cls             # <<<<<<<<<<<<<<
 *         self.nb_fields = nb_fields
 *         self.default_fields = default_fields
 */
  __Pyx_INCREF(__pyx_v_cls);
  __Pyx_GIVEREF(__pyx_v_cls);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.cls);
  __pyx_v_self->__pyx_base.cls = __pyx_v_cls;

  /* "apischema/deserialization/methods.pyx":440
 *     def __init__(self, cls, nb_fields, default_fields, factory_fields):
 *         self.cls = cls
 *         self.nb_fields = nb_fields             # <<<<<<<<<<<<<<
 *         self.default_fields = default_fields
 *         self.factory_fields = factory_fields
 */
  __pyx_t_1 = __Pyx_PyInt_As_long(__pyx_v_nb_fields); if (unlikely((__pyx_t_1 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 440, __pyx_L1_error)
  __pyx_v_self->nb_fields = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":441
 *         self.cls = cls
 *         self.nb_fields = nb_fields
 *         self.default_fields = default_fields             # <<<<<<<<<<<<<<
 *         self.factory_fields = factory_fields
 *         self._dispatch = 2
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_default_fields))||((__pyx_v_default_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_default_fields)->tp_name), 0))) __PYX_ERR(0, 441, __pyx_L1_error)
  __pyx_t_2 = __pyx_v_default_fields;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->default_fields);
  __Pyx_DECREF(__pyx_v_self->default_fields);
  __pyx_v_self->default_fields = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":442
 *         self.nb_fields = nb_fields
 *         self.default_fields = default_fields
 *         self.factory_fields = factory_fields             # <<<<<<<<<<<<<<
 *         self._dispatch = 2
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_factory_fields))||((__pyx_v_factory_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_factory_fields)->tp_name), 0))) __PYX_ERR(0, 442, __pyx_L1_error)
  __pyx_t_2 = __pyx_v_factory_fields;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->factory_fields);
  __Pyx_DECREF(__pyx_v_self->factory_fields);
  __pyx_v_self->factory_fields = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":443
 *         self.default_fields = default_fields
 *         self.factory_fields = factory_fields
 *         self._dispatch = 2             # <<<<<<<<<<<<<<
 * 
 * cdef class SimpleObjectMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 2;

  /* "apischema/deserialization/methods.pyx":438
 *         return FieldsConstructor_construct(self, fields)
 * 
 *     def __init__(self, cls, nb_fields, default_fields, factory_fields):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self.nb_fields = nb_fields
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":431
 * 
 * cdef class FieldsConstructor(Constructor):
 *     cdef readonly long nb_fields             # <<<<<<<<<<<<<<
 *     cdef readonly tuple default_fields
 *     cdef readonly tuple factory_fields
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->nb_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.nb_fields.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":432
 * cdef class FieldsConstructor(Constructor):
 *     cdef readonly long nb_fields
 *     cdef readonly tuple default_fields             # <<<<<<<<<<<<<<
 *     cdef readonly tuple factory_fields
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->default_fields);
  __pyx_r = __pyx_v_self->default_fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":433
 *     cdef readonly long nb_fields
 *     cdef readonly tuple default_fields
 *     cdef readonly tuple factory_fields             # <<<<<<<<<<<<<<
 * 
 *     cpdef construct(self, dict fields):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->factory_fields);
  __pyx_r = __pyx_v_self->factory_fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.default_fields, self.factory_fields, self.nb_fields)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v_self->nb_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.cls);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.cls);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.cls);
  __Pyx_INCREF(__pyx_v_self->default_fields);
  __Pyx_GIVEREF(__pyx_v_self->default_fields);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->default_fields);
  __Pyx_INCREF(__pyx_v_self->factory_fields);
  __Pyx_GIVEREF(__pyx_v_self->factory_fields);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->factory_fields);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.default_fields, self.factory_fields, self.nb_fields)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.default_fields, self.factory_fields, self.nb_fields)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None or self.default_fields is not None or self.factory_fields is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.default_fields, self.factory_fields, self.nb_fields)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None or self.default_fields is not None or self.factory_fields is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->__pyx_base.cls != Py_None);
    __pyx_t_6 = (__pyx_t_4 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->default_fields != ((PyObject*)Py_None));
    __pyx_t_4 = (__pyx_t_6 != 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_5 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->factory_fields != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    __pyx_t_5 = __pyx_t_6;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.default_fields is not None or self.factory_fields is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None or self.default_fields is not None or self.factory_fields is not None
 *     if use_setstate:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_FieldsConstructor); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_210124308);
    __Pyx_GIVEREF(__pyx_int_210124308);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_210124308);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.default_fields is not None or self.factory_fields is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, None), state
 *     else:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FieldsConstructor__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_FieldsConstructor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_210124308);
    __Pyx_GIVEREF(__pyx_int_210124308);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_210124308);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FieldsConstructor__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17FieldsConstructor_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FieldsConstructor__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FieldsConstructor__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FieldsConstructor, (type(self), 0xc863e14, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FieldsConstructor__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":453
 *     cdef readonly str unexpected
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SimpleObjectMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":454
 * 
 *     cpdef deserialize(self, object data):
 *         return SimpleObjectMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constructor, fields, all_aliases, typed_dict, missing, unexpected):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_SimpleObjectMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":453
 *     cdef readonly str unexpected
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SimpleObjectMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":456
 *         return SimpleObjectMethod_deserialize(self, data)
 * 
 *     def __init__(self, constructor, fields, all_aliases, typed_dict, missing, unexpected):             # <<<<<<<<<<<<<<
 *         self.constructor = constructor
 *         self.fields = fields
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constructor = 0;
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_all_aliases = 0;
  PyObject *__pyx_v_typed_dict = 0;
  PyObject *__pyx_v_missing = 0;
  PyObject *__pyx_v_unexpected = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constructor,&__pyx_n_s_fields,&__pyx_n_s_all_aliases,&__pyx_n_s_typed_dict,&__pyx_n_s_missing,&__pyx_n_s_unexpected,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constructor)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(0, 456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_all_aliases)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(0, 456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_typed_dict)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(0, 456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_missing)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(0, 456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unexpected)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(0, 456, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 456, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_constructor = values[0];
    __pyx_v_fields = values[1];
    __pyx_v_all_aliases = values[2];
    __pyx_v_typed_dict = values[3];
    __pyx_v_missing = values[4];
    __pyx_v_unexpected = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 456, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self), __pyx_v_constructor, __pyx_v_fields, __pyx_v_all_aliases, __pyx_v_typed_dict, __pyx_v_missing, __pyx_v_unexpected);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_constructor, PyObject *__pyx_v_fields, PyObject *__pyx_v_all_aliases, PyObject *__pyx_v_typed_dict, PyObject *__pyx_v_missing, PyObject *__pyx_v_unexpected) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":457
 * 
 *     def __init__(self, constructor, fields, all_aliases, typed_dict, missing, unexpected):
 *         self.constructor = constructor             # <<<<<<<<<<<<<<
 *         self.fields = fields
 *         self.all_aliases = all_aliases
 */
  if (!(likely(((__pyx_v_constructor) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_constructor, __pyx_ptype_9apischema_15deserialization_7methods_Constructor))))) __PYX_ERR(0, 457, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constructor;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constructor);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->constructor));
  __pyx_v_self->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":458
 *     def __init__(self, constructor, fields, all_aliases, typed_dict, missing, unexpected):
 *         self.constructor = constructor
 *         self.fields = fields             # <<<<<<<<<<<<<<
 *         self.all_aliases = all_aliases
 *         self.typed_dict = typed_dict
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_fields))||((__pyx_v_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_fields)->tp_name), 0))) __PYX_ERR(0, 458, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_fields;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->fields);
  __Pyx_DECREF(__pyx_v_self->fields);
  __pyx_v_self->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":459
 *         self.constructor = constructor
 *         self.fields = fields
 *         self.all_aliases = all_aliases             # <<<<<<<<<<<<<<
 *         self.typed_dict = typed_dict
 *         self.missing = missing
 */
  if (!(likely(PySet_CheckExact(__pyx_v_all_aliases))||((__pyx_v_all_aliases) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_all_aliases)->tp_name), 0))) __PYX_ERR(0, 459, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_all_aliases;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->all_aliases);
  __Pyx_DECREF(__pyx_v_self->all_aliases);
  __pyx_v_self->all_aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":460
 *         self.fields = fields
 *         self.all_aliases = all_aliases
 *         self.typed_dict = typed_dict             # <<<<<<<<<<<<<<
 *         self.missing = missing
 *         self.unexpected = unexpected
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_typed_dict); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error)
  __pyx_v_self->typed_dict = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":461
 *         self.all_aliases = all_aliases
 *         self.typed_dict = typed_dict
 *         self.missing = missing             # <<<<<<<<<<<<<<
 *         self.unexpected = unexpected
 *         self._dispatch = 12
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_missing))||((__pyx_v_missing) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_missing)->tp_name), 0))) __PYX_ERR(0, 461, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_missing;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->missing);
  __Pyx_DECREF(__pyx_v_self->missing);
  __pyx_v_self->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":462
 *         self.typed_dict = typed_dict
 *         self.missing = missing
 *         self.unexpected = unexpected             # <<<<<<<<<<<<<<
 *         self._dispatch = 12
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_unexpected))||((__pyx_v_unexpected) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_unexpected)->tp_name), 0))) __PYX_ERR(0, 462, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_unexpected;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->unexpected);
  __Pyx_DECREF(__pyx_v_self->unexpected);
  __pyx_v_self->unexpected = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":463
 *         self.missing = missing
 *         self.unexpected = unexpected
 *         self._dispatch = 12             # <<<<<<<<<<<<<<
 * 
 * cdef class ObjectMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 12;

  /* "apischema/deserialization/methods.pyx":456
 *         return SimpleObjectMethod_deserialize(self, data)
 * 
 *     def __init__(self, constructor, fields, all_aliases, typed_dict, missing, unexpected):             # <<<<<<<<<<<<<<
 *         self.constructor = constructor
 *         self.fields = fields
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":446
 * 
 * cdef class SimpleObjectMethod(DeserializationMethod):
 *     cdef readonly Constructor constructor             # <<<<<<<<<<<<<<
 *     cdef readonly tuple fields
 *     cdef readonly set all_aliases
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->constructor));
  __pyx_r = ((PyObject *)__pyx_v_self->constructor);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":447
 * cdef class SimpleObjectMethod(DeserializationMethod):
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple fields             # <<<<<<<<<<<<<<
 *     cdef readonly set all_aliases
 *     cdef readonly bint typed_dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->fields);
  __pyx_r = __pyx_v_self->fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":448
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple fields
 *     cdef readonly set all_aliases             # <<<<<<<<<<<<<<
 *     cdef readonly bint typed_dict
 *     cdef readonly str missing
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->all_aliases);
  __pyx_r = __pyx_v_self->all_aliases;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":449
 *     cdef readonly tuple fields
 *     cdef readonly set all_aliases
 *     cdef readonly bint typed_dict             # <<<<<<<<<<<<<<
 *     cdef readonly str missing
 *     cdef readonly str unexpected
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->typed_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.typed_dict.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":450
 *     cdef readonly set all_aliases
 *     cdef readonly bint typed_dict
 *     cdef readonly str missing             # <<<<<<<<<<<<<<
 *     cdef readonly str unexpected
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->missing);
  __pyx_r = __pyx_v_self->missing;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":451
 *     cdef readonly bint typed_dict
 *     cdef readonly str missing
 *     cdef readonly str unexpected             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->unexpected);
  __pyx_r = __pyx_v_self->unexpected;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.all_aliases, self.constructor, self.fields, self.missing, self.typed_dict, self.unexpected)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->typed_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->all_aliases);
  __Pyx_GIVEREF(__pyx_v_self->all_aliases);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->all_aliases);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->constructor));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constructor));
  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_self->constructor));
  __Pyx_INCREF(__pyx_v_self->fields);
  __Pyx_GIVEREF(__pyx_v_self->fields);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->fields);
  __Pyx_INCREF(__pyx_v_self->missing);
  __Pyx_GIVEREF(__pyx_v_self->missing);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_self->missing);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->unexpected);
  __Pyx_GIVEREF(__pyx_v_self->unexpected);
  PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_self->unexpected);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.all_aliases, self.constructor, self.fields, self.missing, self.typed_dict, self.unexpected)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.all_aliases, self.constructor, self.fields, self.missing, self.typed_dict, self.unexpected)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_4 = (__pyx_v__dict != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.all_aliases is not None or self.constructor is not None or self.fields is not None or self.missing is not None or self.unexpected is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.all_aliases, self.constructor, self.fields, self.missing, self.typed_dict, self.unexpected)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.all_aliases is not None or self.constructor is not None or self.fields is not None or self.missing is not None or self.unexpected is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->all_aliases != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (((PyObject *)__pyx_v_self->constructor) != Py_None);
    __pyx_t_4 = (__pyx_t_6 != 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_5 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->fields != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->missing != ((PyObject*)Py_None));
    __pyx_t_4 = (__pyx_t_6 != 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_5 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->unexpected != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_4 != 0);
    __pyx_t_5 = __pyx_t_6;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_5;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.all_aliases is not None or self.constructor is not None or self.fields is not None or self.missing is not None or self.unexpected is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, None), state
 *     else:
 */
  __pyx_t_5 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_5) {

    /* "(tree fragment)":13
 *         use_setstate = self.all_aliases is not None or self.constructor is not None or self.fields is not None or self.missing is not None or self.unexpected is not None
 *     if use_setstate:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_SimpleObjectMetho); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_108544010);
    __Pyx_GIVEREF(__pyx_int_108544010);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_108544010);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.all_aliases is not None or self.constructor is not None or self.fields is not None or self.missing is not None or self.unexpected is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, None), state
 *     else:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SimpleObjectMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_SimpleObjectMetho); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_108544010);
    __Pyx_GIVEREF(__pyx_int_108544010);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_108544010);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SimpleObjectMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SimpleObjectMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SimpleObjectMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SimpleObjectMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SimpleObjectMethod, (type(self), 0x678400a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SimpleObjectMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":484
 *     cdef readonly bint aggregate_fields
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ObjectMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":485
 * 
 *     cpdef deserialize(self, object data):
 *         return ObjectMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constructor, constraints, fields, flattened_fields, pattern_fields, additional_field, all_aliases, additional_properties, typed_dict, validators, init_defaults, post_init_modified, aliaser, missing, unexpected, discriminator):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ObjectMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":484
 *     cdef readonly bint aggregate_fields
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ObjectMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_12ObjectMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":487
 *         return ObjectMethod_deserialize(self, data)
 * 
 *     def __init__(self, constructor, constraints, fields, flattened_fields, pattern_fields, additional_field, all_aliases, additional_properties, typed_dict, validators, init_defaults, post_init_modified, aliaser, missing, unexpected, discriminator):             # <<<<<<<<<<<<<<
 *         self.constructor = constructor
 *         self.constraints = constraints
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constructor = 0;
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_flattened_fields = 0;
  PyObject *__pyx_v_pattern_fields = 0;
  PyObject *__pyx_v_additional_field = 0;
  PyObject *__pyx_v_all_aliases = 0;
  PyObject *__pyx_v_additional_properties = 0;
  PyObject *__pyx_v_typed_dict = 0;
  PyObject *__pyx_v_validators = 0;
  PyObject *__pyx_v_init_defaults = 0;
  PyObject *__pyx_v_post_init_modified = 0;
  PyObject *__pyx_v_aliaser = 0;
  PyObject *__pyx_v_missing = 0;
  PyObject *__pyx_v_unexpected = 0;
  PyObject *__pyx_v_discriminator = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constructor,&__pyx_n_s_constraints,&__pyx_n_s_fields,&__pyx_n_s_flattened_fields,&__pyx_n_s_pattern_fields,&__pyx_n_s_additional_field,&__pyx_n_s_all_aliases,&__pyx_n_s_additional_properties,&__pyx_n_s_typed_dict,&__pyx_n_s_validators,&__pyx_n_s_init_defaults,&__pyx_n_s_post_init_modified,&__pyx_n_s_aliaser,&__pyx_n_s_missing,&__pyx_n_s_unexpected,&__pyx_n_s_discriminator,0};
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constructor)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 1); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 2); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flattened_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 3); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 4); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_additional_field)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 5); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_all_aliases)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 6); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_additional_properties)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 7); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_typed_dict)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 8); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validators)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 9); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_defaults)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 10); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_post_init_modified)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 11); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_aliaser)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 12); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (likely((values[13] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_missing)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 13); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (likely((values[14] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unexpected)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 14); __PYX_ERR(0, 487, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (likely((values[15] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_discriminator)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, 15); __PYX_ERR(0, 487, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 487, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 16) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
      values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
      values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
      values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
      values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
      values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
      values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
    }
    __pyx_v_constructor = values[0];
    __pyx_v_constraints = values[1];
    __pyx_v_fields = values[2];
    __pyx_v_flattened_fields = values[3];
    __pyx_v_pattern_fields = values[4];
    __pyx_v_additional_field = values[5];
    __pyx_v_all_aliases = values[6];
    __pyx_v_additional_properties = values[7];
    __pyx_v_typed_dict = values[8];
    __pyx_v_validators = values[9];
    __pyx_v_init_defaults = values[10];
    __pyx_v_post_init_modified = values[11];
    __pyx_v_aliaser = values[12];
    __pyx_v_missing = values[13];
    __pyx_v_unexpected = values[14];
    __pyx_v_discriminator = values[15];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 16, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 487, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self), __pyx_v_constructor, __pyx_v_constraints, __pyx_v_fields, __pyx_v_flattened_fields, __pyx_v_pattern_fields, __pyx_v_additional_field, __pyx_v_all_aliases, __pyx_v_additional_properties, __pyx_v_typed_dict, __pyx_v_validators, __pyx_v_init_defaults, __pyx_v_post_init_modified, __pyx_v_aliaser, __pyx_v_missing, __pyx_v_unexpected, __pyx_v_discriminator);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_constructor, PyObject *__pyx_v_constraints, PyObject *__pyx_v_fields, PyObject *__pyx_v_flattened_fields, PyObject *__pyx_v_pattern_fields, PyObject *__pyx_v_additional_field, PyObject *__pyx_v_all_aliases, PyObject *__pyx_v_additional_properties, PyObject *__pyx_v_typed_dict, PyObject *__pyx_v_validators, PyObject *__pyx_v_init_defaults, PyObject *__pyx_v_post_init_modified, PyObject *__pyx_v_aliaser, PyObject *__pyx_v_missing, PyObject *__pyx_v_unexpected, PyObject *__pyx_v_discriminator) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":488
 * 
 *     def __init__(self, constructor, constraints, fields, flattened_fields, pattern_fields, additional_field, all_aliases, additional_properties, typed_dict, validators, init_defaults, post_init_modified, aliaser, missing, unexpected, discriminator):
 *         self.constructor = constructor             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.fields = fields
 */
  if (!(likely(((__pyx_v_constructor) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_constructor, __pyx_ptype_9apischema_15deserialization_7methods_Constructor))))) __PYX_ERR(0, 488, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constructor;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constructor);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->constructor));
  __pyx_v_self->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":489
 *     def __init__(self, constructor, constraints, fields, flattened_fields, pattern_fields, additional_field, all_aliases, additional_properties, typed_dict, validators, init_defaults, post_init_modified, aliaser, missing, unexpected, discriminator):
 *         self.constructor = constructor
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.fields = fields
 *         self.flattened_fields = flattened_fields
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 489, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":490
 *         self.constructor = constructor
 *         self.constraints = constraints
 *         self.fields = fields             # <<<<<<<<<<<<<<
 *         self.flattened_fields = flattened_fields
 *         self.pattern_fields = pattern_fields
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_fields))||((__pyx_v_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_fields)->tp_name), 0))) __PYX_ERR(0, 490, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_fields;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->fields);
  __Pyx_DECREF(__pyx_v_self->fields);
  __pyx_v_self->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":491
 *         self.constraints = constraints
 *         self.fields = fields
 *         self.flattened_fields = flattened_fields             # <<<<<<<<<<<<<<
 *         self.pattern_fields = pattern_fields
 *         self.additional_field = additional_field
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_flattened_fields))||((__pyx_v_flattened_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_flattened_fields)->tp_name), 0))) __PYX_ERR(0, 491, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_flattened_fields;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->flattened_fields);
  __Pyx_DECREF(__pyx_v_self->flattened_fields);
  __pyx_v_self->flattened_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":492
 *         self.fields = fields
 *         self.flattened_fields = flattened_fields
 *         self.pattern_fields = pattern_fields             # <<<<<<<<<<<<<<
 *         self.additional_field = additional_field
 *         self.all_aliases = all_aliases
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_pattern_fields))||((__pyx_v_pattern_fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_pattern_fields)->tp_name), 0))) __PYX_ERR(0, 492, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_pattern_fields;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->pattern_fields);
  __Pyx_DECREF(__pyx_v_self->pattern_fields);
  __pyx_v_self->pattern_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":493
 *         self.flattened_fields = flattened_fields
 *         self.pattern_fields = pattern_fields
 *         self.additional_field = additional_field             # <<<<<<<<<<<<<<
 *         self.all_aliases = all_aliases
 *         self.additional_properties = additional_properties
 */
  __Pyx_INCREF(__pyx_v_additional_field);
  __Pyx_GIVEREF(__pyx_v_additional_field);
  __Pyx_GOTREF(__pyx_v_self->additional_field);
  __Pyx_DECREF(__pyx_v_self->additional_field);
  __pyx_v_self->additional_field = __pyx_v_additional_field;

  /* "apischema/deserialization/methods.pyx":494
 *         self.pattern_fields = pattern_fields
 *         self.additional_field = additional_field
 *         self.all_aliases = all_aliases             # <<<<<<<<<<<<<<
 *         self.additional_properties = additional_properties
 *         self.typed_dict = typed_dict
 */
  if (!(likely(PySet_CheckExact(__pyx_v_all_aliases))||((__pyx_v_all_aliases) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_all_aliases)->tp_name), 0))) __PYX_ERR(0, 494, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_all_aliases;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->all_aliases);
  __Pyx_DECREF(__pyx_v_self->all_aliases);
  __pyx_v_self->all_aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":495
 *         self.additional_field = additional_field
 *         self.all_aliases = all_aliases
 *         self.additional_properties = additional_properties             # <<<<<<<<<<<<<<
 *         self.typed_dict = typed_dict
 *         self.validators = validators
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_additional_properties); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L1_error)
  __pyx_v_self->additional_properties = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":496
 *         self.all_aliases = all_aliases
 *         self.additional_properties = additional_properties
 *         self.typed_dict = typed_dict             # <<<<<<<<<<<<<<
 *         self.validators = validators
 *         self.init_defaults = init_defaults
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_typed_dict); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 496, __pyx_L1_error)
  __pyx_v_self->typed_dict = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":497
 *         self.additional_properties = additional_properties
 *         self.typed_dict = typed_dict
 *         self.validators = validators             # <<<<<<<<<<<<<<
 *         self.init_defaults = init_defaults
 *         self.post_init_modified = post_init_modified
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_validators))||((__pyx_v_validators) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_validators)->tp_name), 0))) __PYX_ERR(0, 497, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_validators;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->validators);
  __Pyx_DECREF(__pyx_v_self->validators);
  __pyx_v_self->validators = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":498
 *         self.typed_dict = typed_dict
 *         self.validators = validators
 *         self.init_defaults = init_defaults             # <<<<<<<<<<<<<<
 *         self.post_init_modified = post_init_modified
 *         self.aliaser = aliaser
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_init_defaults))||((__pyx_v_init_defaults) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_init_defaults)->tp_name), 0))) __PYX_ERR(0, 498, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_init_defaults;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->init_defaults);
  __Pyx_DECREF(__pyx_v_self->init_defaults);
  __pyx_v_self->init_defaults = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":499
 *         self.validators = validators
 *         self.init_defaults = init_defaults
 *         self.post_init_modified = post_init_modified             # <<<<<<<<<<<<<<
 *         self.aliaser = aliaser
 *         self.missing = missing
 */
  if (!(likely(PySet_CheckExact(__pyx_v_post_init_modified))||((__pyx_v_post_init_modified) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_post_init_modified)->tp_name), 0))) __PYX_ERR(0, 499, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_post_init_modified;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->post_init_modified);
  __Pyx_DECREF(__pyx_v_self->post_init_modified);
  __pyx_v_self->post_init_modified = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":500
 *         self.init_defaults = init_defaults
 *         self.post_init_modified = post_init_modified
 *         self.aliaser = aliaser             # <<<<<<<<<<<<<<
 *         self.missing = missing
 *         self.unexpected = unexpected
 */
  __Pyx_INCREF(__pyx_v_aliaser);
  __Pyx_GIVEREF(__pyx_v_aliaser);
  __Pyx_GOTREF(__pyx_v_self->aliaser);
  __Pyx_DECREF(__pyx_v_self->aliaser);
  __pyx_v_self->aliaser = __pyx_v_aliaser;

  /* "apischema/deserialization/methods.pyx":501
 *         self.post_init_modified = post_init_modified
 *         self.aliaser = aliaser
 *         self.missing = missing             # <<<<<<<<<<<<<<
 *         self.unexpected = unexpected
 *         self.discriminator = discriminator
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_missing))||((__pyx_v_missing) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_missing)->tp_name), 0))) __PYX_ERR(0, 501, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_missing;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->missing);
  __Pyx_DECREF(__pyx_v_self->missing);
  __pyx_v_self->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":502
 *         self.aliaser = aliaser
 *         self.missing = missing
 *         self.unexpected = unexpected             # <<<<<<<<<<<<<<
 *         self.discriminator = discriminator
 *         self.aggregate_fields = bool(
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_unexpected))||((__pyx_v_unexpected) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_unexpected)->tp_name), 0))) __PYX_ERR(0, 502, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_unexpected;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->unexpected);
  __Pyx_DECREF(__pyx_v_self->unexpected);
  __pyx_v_self->unexpected = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":503
 *         self.missing = missing
 *         self.unexpected = unexpected
 *         self.discriminator = discriminator             # <<<<<<<<<<<<<<
 *         self.aggregate_fields = bool(
 *             self.flattened_fields
 */
  __Pyx_INCREF(__pyx_v_discriminator);
  __Pyx_GIVEREF(__pyx_v_discriminator);
  __Pyx_GOTREF(__pyx_v_self->discriminator);
  __Pyx_DECREF(__pyx_v_self->discriminator);
  __pyx_v_self->discriminator = __pyx_v_discriminator;

  /* "apischema/deserialization/methods.pyx":505
 *         self.discriminator = discriminator
 *         self.aggregate_fields = bool(
 *             self.flattened_fields             # <<<<<<<<<<<<<<
 *             or self.pattern_fields
 *             or self.additional_field is not None
 */
  __pyx_t_3 = (__pyx_v_self->flattened_fields != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->flattened_fields) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L3_bool_binop_done;
  }

  /* "apischema/deserialization/methods.pyx":506
 *         self.aggregate_fields = bool(
 *             self.flattened_fields
 *             or self.pattern_fields             # <<<<<<<<<<<<<<
 *             or self.additional_field is not None
 *         )
 */
  __pyx_t_3 = (__pyx_v_self->pattern_fields != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->pattern_fields) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L3_bool_binop_done;
  }

  /* "apischema/deserialization/methods.pyx":507
 *             self.flattened_fields
 *             or self.pattern_fields
 *             or self.additional_field is not None             # <<<<<<<<<<<<<<
 *         )
 *         self._dispatch = 13
 */
  __pyx_t_3 = (__pyx_v_self->additional_field != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_2 = __pyx_t_4;
  __pyx_L3_bool_binop_done:;

  /* "apischema/deserialization/methods.pyx":504
 *         self.unexpected = unexpected
 *         self.discriminator = discriminator
 *         self.aggregate_fields = bool(             # <<<<<<<<<<<<<<
 *             self.flattened_fields
 *             or self.pattern_fields
 */
  __pyx_v_self->aggregate_fields = (!(!__pyx_t_2));

  /* "apischema/deserialization/methods.pyx":509
 *             or self.additional_field is not None
 *         )
 *         self._dispatch = 13             # <<<<<<<<<<<<<<
 * 
 * cdef class NoneMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 13;

  /* "apischema/deserialization/methods.pyx":487
 *         return ObjectMethod_deserialize(self, data)
 * 
 *     def __init__(self, constructor, constraints, fields, flattened_fields, pattern_fields, additional_field, all_aliases, additional_properties, typed_dict, validators, init_defaults, post_init_modified, aliaser, missing, unexpected, discriminator):             # <<<<<<<<<<<<<<
 *         self.constructor = constructor
 *         self.constraints = constraints
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":466
 * 
 * cdef class ObjectMethod(DeserializationMethod):
 *     cdef readonly Constructor constructor             # <<<<<<<<<<<<<<
 *     cdef readonly tuple constraints
 *     cdef readonly tuple fields
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constructor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constructor_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constructor___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constructor___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->constructor));
  __pyx_r = ((PyObject *)__pyx_v_self->constructor);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":467
 * cdef class ObjectMethod(DeserializationMethod):
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly tuple fields
 *     cdef readonly tuple flattened_fields
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":468
 *     cdef readonly Constructor constructor
 *     cdef readonly tuple constraints
 *     cdef readonly tuple fields             # <<<<<<<<<<<<<<
 *     cdef readonly tuple flattened_fields
 *     cdef readonly tuple pattern_fields
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_6fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_6fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->fields);
  __pyx_r = __pyx_v_self->fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":469
 *     cdef readonly tuple constraints
 *     cdef readonly tuple fields
 *     cdef readonly tuple flattened_fields             # <<<<<<<<<<<<<<
 *     cdef readonly tuple pattern_fields
 *     cdef readonly object additional_field
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->flattened_fields);
  __pyx_r = __pyx_v_self->flattened_fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":470
 *     cdef readonly tuple fields
 *     cdef readonly tuple flattened_fields
 *     cdef readonly tuple pattern_fields             # <<<<<<<<<<<<<<
 *     cdef readonly object additional_field
 *     cdef readonly set all_aliases
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->pattern_fields);
  __pyx_r = __pyx_v_self->pattern_fields;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":471
 *     cdef readonly tuple flattened_fields
 *     cdef readonly tuple pattern_fields
 *     cdef readonly object additional_field             # <<<<<<<<<<<<<<
 *     cdef readonly set all_aliases
 *     cdef readonly bint additional_properties
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->additional_field);
  __pyx_r = __pyx_v_self->additional_field;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":472
 *     cdef readonly tuple pattern_fields
 *     cdef readonly object additional_field
 *     cdef readonly set all_aliases             # <<<<<<<<<<<<<<
 *     cdef readonly bint additional_properties
 *     cdef readonly bint typed_dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->all_aliases);
  __pyx_r = __pyx_v_self->all_aliases;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":473
 *     cdef readonly object additional_field
 *     cdef readonly set all_aliases
 *     cdef readonly bint additional_properties             # <<<<<<<<<<<<<<
 *     cdef readonly bint typed_dict
 *     cdef readonly tuple validators
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->additional_properties); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.additional_properties.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":474
 *     cdef readonly set all_aliases
 *     cdef readonly bint additional_properties
 *     cdef readonly bint typed_dict             # <<<<<<<<<<<<<<
 *     cdef readonly tuple validators
 *     cdef readonly tuple init_defaults
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->typed_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.typed_dict.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":475
 *     cdef readonly bint additional_properties
 *     cdef readonly bint typed_dict
 *     cdef readonly tuple validators             # <<<<<<<<<<<<<<
 *     cdef readonly tuple init_defaults
 *     cdef readonly set post_init_modified
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10validators_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10validators_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10validators___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10validators___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->validators);
  __pyx_r = __pyx_v_self->validators;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":476
 *     cdef readonly bint typed_dict
 *     cdef readonly tuple validators
 *     cdef readonly tuple init_defaults             # <<<<<<<<<<<<<<
 *     cdef readonly set post_init_modified
 *     cdef readonly object aliaser
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->init_defaults);
  __pyx_r = __pyx_v_self->init_defaults;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":477
 *     cdef readonly tuple validators
 *     cdef readonly tuple init_defaults
 *     cdef readonly set post_init_modified             # <<<<<<<<<<<<<<
 *     cdef readonly object aliaser
 *     cdef readonly str missing
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->post_init_modified);
  __pyx_r = __pyx_v_self->post_init_modified;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":478
 *     cdef readonly tuple init_defaults
 *     cdef readonly set post_init_modified
 *     cdef readonly object aliaser             # <<<<<<<<<<<<<<
 *     cdef readonly str missing
 *     cdef readonly str unexpected
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->aliaser);
  __pyx_r = __pyx_v_self->aliaser;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":479
 *     cdef readonly set post_init_modified
 *     cdef readonly object aliaser
 *     cdef readonly str missing             # <<<<<<<<<<<<<<
 *     cdef readonly str unexpected
 *     cdef readonly object discriminator
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7missing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7missing_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7missing___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->missing);
  __pyx_r = __pyx_v_self->missing;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":480
 *     cdef readonly object aliaser
 *     cdef readonly str missing
 *     cdef readonly str unexpected             # <<<<<<<<<<<<<<
 *     cdef readonly object discriminator
 *     cdef readonly bint aggregate_fields
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->unexpected);
  __pyx_r = __pyx_v_self->unexpected;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":481
 *     cdef readonly str missing
 *     cdef readonly str unexpected
 *     cdef readonly object discriminator             # <<<<<<<<<<<<<<
 *     cdef readonly bint aggregate_fields
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->discriminator);
  __pyx_r = __pyx_v_self->discriminator;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":482
 *     cdef readonly str unexpected
 *     cdef readonly object discriminator
 *     cdef readonly bint aggregate_fields             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->aggregate_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.aggregate_fields.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.additional_field, self.additional_properties, self.aggregate_fields, self.aliaser, self.all_aliases, self.constraints, self.constructor, self.discriminator, self.fields, self.flattened_fields, self.init_defaults, self.missing, self.pattern_fields, self.post_init_modified, self.typed_dict, self.unexpected, self.validators)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->additional_properties); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->aggregate_fields); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->typed_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(18); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->additional_field);
  __Pyx_GIVEREF(__pyx_v_self->additional_field);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_self->additional_field);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_self->aliaser);
  __Pyx_GIVEREF(__pyx_v_self->aliaser);
  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_self->aliaser);
  __Pyx_INCREF(__pyx_v_self->all_aliases);
  __Pyx_GIVEREF(__pyx_v_self->all_aliases);
  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_self->all_aliases);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_self->constraints);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->constructor));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constructor));
  PyTuple_SET_ITEM(__pyx_t_5, 7, ((PyObject *)__pyx_v_self->constructor));
  __Pyx_INCREF(__pyx_v_self->discriminator);
  __Pyx_GIVEREF(__pyx_v_self->discriminator);
  PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_v_self->discriminator);
  __Pyx_INCREF(__pyx_v_self->fields);
  __Pyx_GIVEREF(__pyx_v_self->fields);
  PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_self->fields);
  __Pyx_INCREF(__pyx_v_self->flattened_fields);
  __Pyx_GIVEREF(__pyx_v_self->flattened_fields);
  PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_v_self->flattened_fields);
  __Pyx_INCREF(__pyx_v_self->init_defaults);
  __Pyx_GIVEREF(__pyx_v_self->init_defaults);
  PyTuple_SET_ITEM(__pyx_t_5, 11, __pyx_v_self->init_defaults);
  __Pyx_INCREF(__pyx_v_self->missing);
  __Pyx_GIVEREF(__pyx_v_self->missing);
  PyTuple_SET_ITEM(__pyx_t_5, 12, __pyx_v_self->missing);
  __Pyx_INCREF(__pyx_v_self->pattern_fields);
  __Pyx_GIVEREF(__pyx_v_self->pattern_fields);
  PyTuple_SET_ITEM(__pyx_t_5, 13, __pyx_v_self->pattern_fields);
  __Pyx_INCREF(__pyx_v_self->post_init_modified);
  __Pyx_GIVEREF(__pyx_v_self->post_init_modified);
  PyTuple_SET_ITEM(__pyx_t_5, 14, __pyx_v_self->post_init_modified);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 15, __pyx_t_4);
  __Pyx_INCREF(__pyx_v_self->unexpected);
  __Pyx_GIVEREF(__pyx_v_self->unexpected);
  PyTuple_SET_ITEM(__pyx_t_5, 16, __pyx_v_self->unexpected);
  __Pyx_INCREF(__pyx_v_self->validators);
  __Pyx_GIVEREF(__pyx_v_self->validators);
  PyTuple_SET_ITEM(__pyx_t_5, 17, __pyx_v_self->validators);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.additional_field, self.additional_properties, self.aggregate_fields, self.aliaser, self.all_aliases, self.constraints, self.constructor, self.discriminator, self.fields, self.flattened_fields, self.init_defaults, self.missing, self.pattern_fields, self.post_init_modified, self.typed_dict, self.unexpected, self.validators)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_5 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v__dict = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.additional_field, self.additional_properties, self.aggregate_fields, self.aliaser, self.all_aliases, self.constraints, self.constructor, self.discriminator, self.fields, self.flattened_fields, self.init_defaults, self.missing, self.pattern_fields, self.post_init_modified, self.typed_dict, self.unexpected, self.validators)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_6 = (__pyx_v__dict != Py_None);
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.additional_field is not None or self.aliaser is not None or self.all_aliases is not None or self.constraints is not None or self.constructor is not None or self.discriminator is not None or self.fields is not None or self.flattened_fields is not None or self.init_defaults is not None or self.missing is not None or self.pattern_fields is not None or self.post_init_modified is not None or self.unexpected is not None or self.validators is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.additional_field, self.additional_properties, self.aggregate_fields, self.aliaser, self.all_aliases, self.constraints, self.constructor, self.discriminator, self.fields, self.flattened_fields, self.init_defaults, self.missing, self.pattern_fields, self.post_init_modified, self.typed_dict, self.unexpected, self.validators)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.additional_field is not None or self.aliaser is not None or self.all_aliases is not None or self.constraints is not None or self.constructor is not None or self.discriminator is not None or self.fields is not None or self.flattened_fields is not None or self.init_defaults is not None or self.missing is not None or self.pattern_fields is not None or self.post_init_modified is not None or self.unexpected is not None or self.validators is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, None), state
 */
  /*else*/ {
    __pyx_t_6 = (__pyx_v_self->additional_field != Py_None);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->aliaser != Py_None);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->all_aliases != ((PyObject*)Py_None));
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (((PyObject *)__pyx_v_self->constructor) != Py_None);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->discriminator != Py_None);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->fields != ((PyObject*)Py_None));
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->flattened_fields != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->init_defaults != ((PyObject*)Py_None));
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->missing != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->pattern_fields != ((PyObject*)Py_None));
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->post_init_modified != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_self->unexpected != ((PyObject*)Py_None));
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (!__pyx_t_8) {
    } else {
      __pyx_t_7 = __pyx_t_8;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_8 = (__pyx_v_self->validators != ((PyObject*)Py_None));
    __pyx_t_6 = (__pyx_t_8 != 0);
    __pyx_t_7 = __pyx_t_6;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_7;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.additional_field is not None or self.aliaser is not None or self.all_aliases is not None or self.constraints is not None or self.constructor is not None or self.discriminator is not None or self.fields is not None or self.flattened_fields is not None or self.init_defaults is not None or self.missing is not None or self.pattern_fields is not None or self.post_init_modified is not None or self.unexpected is not None or self.validators is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, None), state
 *     else:
 */
  __pyx_t_7 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_7) {

    /* "(tree fragment)":13
 *         use_setstate = self.additional_field is not None or self.aliaser is not None or self.all_aliases is not None or self.constraints is not None or self.constructor is not None or self.discriminator is not None or self.fields is not None or self.flattened_fields is not None or self.init_defaults is not None or self.missing is not None or self.pattern_fields is not None or self.post_init_modified is not None or self.unexpected is not None or self.validators is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_ObjectMethod); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_79953799);
    __Pyx_GIVEREF(__pyx_int_79953799);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_79953799);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_5, 2, Py_None);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.additional_field is not None or self.aliaser is not None or self.all_aliases is not None or self.constraints is not None or self.constructor is not None or self.discriminator is not None or self.fields is not None or self.flattened_fields is not None or self.init_defaults is not None or self.missing is not None or self.pattern_fields is not None or self.post_init_modified is not None or self.unexpected is not None or self.validators is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, None), state
 *     else:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ObjectMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_ObjectMethod); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_79953799);
    __Pyx_GIVEREF(__pyx_int_79953799);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_79953799);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ObjectMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12ObjectMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ObjectMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ObjectMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ObjectMethod, (type(self), 0x4c3ff87, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ObjectMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":513
 * cdef class NoneMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return NoneMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10NoneMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":514
 * 
 *     cpdef deserialize(self, object data):
 *         return NoneMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_NoneMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":513
 * cdef class NoneMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return NoneMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoneMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_10NoneMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoneMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":516
 *         return NoneMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 14
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":517
 * 
 *     def __init__(self):
 *         self._dispatch = 14             # <<<<<<<<<<<<<<
 * 
 * cdef class IntMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 14;

  /* "apischema/deserialization/methods.pyx":516
 *         return NoneMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 14
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_NoneMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_NoneMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_NoneMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoneMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_NoneMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10NoneMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_NoneMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoneMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_NoneMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_NoneMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoneMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":521
 * cdef class IntMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return IntMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9IntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 521, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":522
 * 
 *     cpdef deserialize(self, object data):
 *         return IntMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_IntMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":521
 * cdef class IntMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return IntMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.IntMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_9IntMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.IntMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":524
 *         return IntMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 15
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_9IntMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_9IntMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":525
 * 
 *     def __init__(self):
 *         self._dispatch = 15             # <<<<<<<<<<<<<<
 * 
 * cdef class FloatMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 15;

  /* "apischema/deserialization/methods.pyx":524
 *         return IntMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 15
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_IntMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_IntMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_IntMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.IntMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_IntMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9IntMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9IntMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_IntMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_IntMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_IntMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_IntMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.IntMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":529
 * cdef class FloatMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return FloatMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11FloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":530
 * 
 *     cpdef deserialize(self, object data):
 *         return FloatMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_FloatMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":529
 * cdef class FloatMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return FloatMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.FloatMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_11FloatMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FloatMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":532
 *         return FloatMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 17
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":533
 * 
 *     def __init__(self):
 *         self._dispatch = 17             # <<<<<<<<<<<<<<
 * 
 * cdef class StrMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 17;

  /* "apischema/deserialization/methods.pyx":532
 *         return FloatMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 17
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_FloatMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FloatMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_FloatMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.FloatMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FloatMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11FloatMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_FloatMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FloatMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_FloatMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_FloatMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.FloatMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":537
 * cdef class StrMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return StrMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_9StrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":538
 * 
 *     cpdef deserialize(self, object data):
 *         return StrMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_StrMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":537
 * cdef class StrMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return StrMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.StrMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_9StrMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.StrMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":540
 *         return StrMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 19
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_9StrMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_9StrMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":541
 * 
 *     def __init__(self):
 *         self._dispatch = 19             # <<<<<<<<<<<<<<
 * 
 * cdef class BoolMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 19;

  /* "apischema/deserialization/methods.pyx":540
 *         return StrMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 19
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_StrMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_StrMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_StrMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.StrMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_StrMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_9StrMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_9StrMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_StrMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_StrMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_StrMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_StrMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.StrMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":545
 * cdef class BoolMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return BoolMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_10BoolMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":546
 * 
 *     cpdef deserialize(self, object data):
 *         return BoolMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_BoolMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":545
 * cdef class BoolMethod(DeserializationMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return BoolMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.BoolMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_10BoolMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.BoolMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":548
 *         return BoolMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 21
 * 
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":549
 * 
 *     def __init__(self):
 *         self._dispatch = 21             # <<<<<<<<<<<<<<
 * 
 * cdef class ConstrainedIntMethod(IntMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 21;

  /* "apischema/deserialization/methods.pyx":548
 *         return BoolMethod_deserialize(self, data)
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._dispatch = 21
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch,)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch,)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_BoolMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, None), state
 *     else:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_BoolMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_BoolMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_5409203);
    __Pyx_GIVEREF(__pyx_int_5409203);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_5409203);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.BoolMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_BoolMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10BoolMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_BoolMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_BoolMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_BoolMethod, (type(self), 0x05289b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_BoolMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.BoolMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":554
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedIntMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":555
 * 
 *     cpdef deserialize(self, object data):
 *         return ConstrainedIntMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedIntMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":554
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedIntMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":557
 *         return ConstrainedIntMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 16
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 557, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_constraints = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 557, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self), __pyx_v_constraints);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_constraints) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":558
 * 
 *     def __init__(self, constraints):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self._dispatch = 16
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 558, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":559
 *     def __init__(self, constraints):
 *         self.constraints = constraints
 *         self._dispatch = 16             # <<<<<<<<<<<<<<
 * 
 * cdef class ConstrainedFloatMethod(FloatMethod):
 */
  __pyx_v_self->__pyx_base.__pyx_base._dispatch = 16;

  /* "apischema/deserialization/methods.pyx":557
 *         return ConstrainedIntMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 16
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":552
 * 
 * cdef class ConstrainedIntMethod(IntMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base.__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConstrainedIntMet); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, None), state
 *     else:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedIntMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ConstrainedIntMet); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedIntMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedIntMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedIntMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedIntMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedIntMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedIntMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":564
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedFloatMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":565
 * 
 *     cpdef deserialize(self, object data):
 *         return ConstrainedFloatMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedFloatMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":564
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedFloatMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":567
 *         return ConstrainedFloatMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 18
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 567, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_constraints = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 567, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self), __pyx_v_constraints);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_constraints) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":568
 * 
 *     def __init__(self, constraints):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self._dispatch = 18
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 568, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":569
 *     def __init__(self, constraints):
 *         self.constraints = constraints
 *         self._dispatch = 18             # <<<<<<<<<<<<<<
 * 
 * cdef class ConstrainedStrMethod(StrMethod):
 */
  __pyx_v_self->__pyx_base.__pyx_base._dispatch = 18;

  /* "apischema/deserialization/methods.pyx":567
 *         return ConstrainedFloatMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 18
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":562
 * 
 * cdef class ConstrainedFloatMethod(FloatMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base.__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConstrainedFloatM); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, None), state
 *     else:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedFloatMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ConstrainedFloatM); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedFloatMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedFloatMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedFloatMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedFloatMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedFloatMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":574
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedStrMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":575
 * 
 *     cpdef deserialize(self, object data):
 *         return ConstrainedStrMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedStrMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":574
 *     cdef readonly tuple constraints
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConstrainedStrMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":577
 *         return ConstrainedStrMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 20
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 577, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_constraints = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 577, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self), __pyx_v_constraints);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_constraints) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":578
 * 
 *     def __init__(self, constraints):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self._dispatch = 20
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 578, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":579
 *     def __init__(self, constraints):
 *         self.constraints = constraints
 *         self._dispatch = 20             # <<<<<<<<<<<<<<
 * 
 * cdef class SubprimitiveMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base.__pyx_base._dispatch = 20;

  /* "apischema/deserialization/methods.pyx":577
 *         return ConstrainedStrMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self._dispatch = 20
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":572
 * 
 * cdef class ConstrainedStrMethod(StrMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base.__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConstrainedStrMet); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, None), state
 *     else:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedStrMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ConstrainedStrMet); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89365892);
    __Pyx_GIVEREF(__pyx_int_89365892);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89365892);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedStrMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20ConstrainedStrMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConstrainedStrMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedStrMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConstrainedStrMethod, (type(self), 0x5539d84, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConstrainedStrMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":585
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SubprimitiveMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":586
 * 
 *     cpdef deserialize(self, object data):
 *         return SubprimitiveMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, cls, method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_SubprimitiveMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":585
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return SubprimitiveMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":588
 *         return SubprimitiveMethod_deserialize(self, data)
 * 
 *     def __init__(self, cls, method):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self.method = method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 588, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 588, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cls = values[0];
    __pyx_v_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 588, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self), __pyx_v_cls, __pyx_v_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":589
 * 
 *     def __init__(self, cls, method):
 *         self.cls = cls             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 22
 */
  if (!(likely(PyType_CheckExact(__pyx_v_cls))||((__pyx_v_cls) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_v_cls)->tp_name), 0))) __PYX_ERR(0, 589, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_cls;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->cls);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->cls));
  __pyx_v_self->cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":590
 *     def __init__(self, cls, method):
 *         self.cls = cls
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self._dispatch = 22
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 590, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":591
 *         self.cls = cls
 *         self.method = method
 *         self._dispatch = 22             # <<<<<<<<<<<<<<
 * 
 * cdef class TupleMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 22;

  /* "apischema/deserialization/methods.pyx":588
 *         return SubprimitiveMethod_deserialize(self, data)
 * 
 *     def __init__(self, cls, method):             # <<<<<<<<<<<<<<
 *         self.cls = cls
 *         self.method = method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":582
 * 
 * cdef class SubprimitiveMethod(DeserializationMethod):
 *     cdef readonly type cls             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->cls));
  __pyx_r = ((PyObject *)__pyx_v_self->cls);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":583
 * cdef class SubprimitiveMethod(DeserializationMethod):
 *     cdef readonly type cls
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->cls));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cls));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->cls));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.cls, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.cls is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.cls, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.cls is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->cls != ((PyTypeObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.cls is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_SubprimitiveMetho); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_174143295);
    __Pyx_GIVEREF(__pyx_int_174143295);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_174143295);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.cls is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, None), state
 *     else:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SubprimitiveMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_SubprimitiveMetho); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_174143295);
    __Pyx_GIVEREF(__pyx_int_174143295);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_174143295);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SubprimitiveMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18SubprimitiveMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_SubprimitiveMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SubprimitiveMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_SubprimitiveMethod, (type(self), 0xa61373f, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_SubprimitiveMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":599
 *     cdef readonly tuple elt_methods
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return TupleMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":600
 * 
 *     cpdef deserialize(self, object data):
 *         return TupleMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, constraints, min_len_error, max_len_error, elt_methods):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_TupleMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":599
 *     cdef readonly tuple elt_methods
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return TupleMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_11TupleMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":602
 *         return TupleMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, min_len_error, max_len_error, elt_methods):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.min_len_error = min_len_error
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_min_len_error = 0;
  PyObject *__pyx_v_max_len_error = 0;
  PyObject *__pyx_v_elt_methods = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_constraints,&__pyx_n_s_min_len_error,&__pyx_n_s_max_len_error,&__pyx_n_s_elt_methods,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_min_len_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 602, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_len_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 602, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_elt_methods)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 602, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 602, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_constraints = values[0];
    __pyx_v_min_len_error = values[1];
    __pyx_v_max_len_error = values[2];
    __pyx_v_elt_methods = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 602, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self), __pyx_v_constraints, __pyx_v_min_len_error, __pyx_v_max_len_error, __pyx_v_elt_methods);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_constraints, PyObject *__pyx_v_min_len_error, PyObject *__pyx_v_max_len_error, PyObject *__pyx_v_elt_methods) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":603
 * 
 *     def __init__(self, constraints, min_len_error, max_len_error, elt_methods):
 *         self.constraints = constraints             # <<<<<<<<<<<<<<
 *         self.min_len_error = min_len_error
 *         self.max_len_error = max_len_error
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_constraints))||((__pyx_v_constraints) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_constraints)->tp_name), 0))) __PYX_ERR(0, 603, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_constraints;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->constraints);
  __Pyx_DECREF(__pyx_v_self->constraints);
  __pyx_v_self->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":604
 *     def __init__(self, constraints, min_len_error, max_len_error, elt_methods):
 *         self.constraints = constraints
 *         self.min_len_error = min_len_error             # <<<<<<<<<<<<<<
 *         self.max_len_error = max_len_error
 *         self.elt_methods = elt_methods
 */
  __Pyx_INCREF(__pyx_v_min_len_error);
  __Pyx_GIVEREF(__pyx_v_min_len_error);
  __Pyx_GOTREF(__pyx_v_self->min_len_error);
  __Pyx_DECREF(__pyx_v_self->min_len_error);
  __pyx_v_self->min_len_error = __pyx_v_min_len_error;

  /* "apischema/deserialization/methods.pyx":605
 *         self.constraints = constraints
 *         self.min_len_error = min_len_error
 *         self.max_len_error = max_len_error             # <<<<<<<<<<<<<<
 *         self.elt_methods = elt_methods
 *         self._dispatch = 23
 */
  __Pyx_INCREF(__pyx_v_max_len_error);
  __Pyx_GIVEREF(__pyx_v_max_len_error);
  __Pyx_GOTREF(__pyx_v_self->max_len_error);
  __Pyx_DECREF(__pyx_v_self->max_len_error);
  __pyx_v_self->max_len_error = __pyx_v_max_len_error;

  /* "apischema/deserialization/methods.pyx":606
 *         self.min_len_error = min_len_error
 *         self.max_len_error = max_len_error
 *         self.elt_methods = elt_methods             # <<<<<<<<<<<<<<
 *         self._dispatch = 23
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_elt_methods))||((__pyx_v_elt_methods) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_elt_methods)->tp_name), 0))) __PYX_ERR(0, 606, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_elt_methods;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->elt_methods);
  __Pyx_DECREF(__pyx_v_self->elt_methods);
  __pyx_v_self->elt_methods = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":607
 *         self.max_len_error = max_len_error
 *         self.elt_methods = elt_methods
 *         self._dispatch = 23             # <<<<<<<<<<<<<<
 * 
 * cdef class OptionalMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 23;

  /* "apischema/deserialization/methods.pyx":602
 *         return TupleMethod_deserialize(self, data)
 * 
 *     def __init__(self, constraints, min_len_error, max_len_error, elt_methods):             # <<<<<<<<<<<<<<
 *         self.constraints = constraints
 *         self.min_len_error = min_len_error
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":594
 * 
 * cdef class TupleMethod(DeserializationMethod):
 *     cdef readonly tuple constraints             # <<<<<<<<<<<<<<
 *     cdef readonly object min_len_error
 *     cdef readonly object max_len_error
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11constraints_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11constraints_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11constraints___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11constraints___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __pyx_r = __pyx_v_self->constraints;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":595
 * cdef class TupleMethod(DeserializationMethod):
 *     cdef readonly tuple constraints
 *     cdef readonly object min_len_error             # <<<<<<<<<<<<<<
 *     cdef readonly object max_len_error
 *     cdef readonly tuple elt_methods
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->min_len_error);
  __pyx_r = __pyx_v_self->min_len_error;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":596
 *     cdef readonly tuple constraints
 *     cdef readonly object min_len_error
 *     cdef readonly object max_len_error             # <<<<<<<<<<<<<<
 *     cdef readonly tuple elt_methods
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->max_len_error);
  __pyx_r = __pyx_v_self->max_len_error;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":597
 *     cdef readonly object min_len_error
 *     cdef readonly object max_len_error
 *     cdef readonly tuple elt_methods             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods___get__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->elt_methods);
  __pyx_r = __pyx_v_self->elt_methods;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.elt_methods, self.max_len_error, self.min_len_error)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->constraints);
  __Pyx_GIVEREF(__pyx_v_self->constraints);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->constraints);
  __Pyx_INCREF(__pyx_v_self->elt_methods);
  __Pyx_GIVEREF(__pyx_v_self->elt_methods);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->elt_methods);
  __Pyx_INCREF(__pyx_v_self->max_len_error);
  __Pyx_GIVEREF(__pyx_v_self->max_len_error);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->max_len_error);
  __Pyx_INCREF(__pyx_v_self->min_len_error);
  __Pyx_GIVEREF(__pyx_v_self->min_len_error);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->min_len_error);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.constraints, self.elt_methods, self.max_len_error, self.min_len_error)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.elt_methods, self.max_len_error, self.min_len_error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.constraints is not None or self.elt_methods is not None or self.max_len_error is not None or self.min_len_error is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.constraints, self.elt_methods, self.max_len_error, self.min_len_error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.constraints is not None or self.elt_methods is not None or self.max_len_error is not None or self.min_len_error is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->constraints != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->elt_methods != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->max_len_error != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->min_len_error != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.elt_methods is not None or self.max_len_error is not None or self.min_len_error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.constraints is not None or self.elt_methods is not None or self.max_len_error is not None or self.min_len_error is not None
 *     if use_setstate:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_TupleMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119135242);
    __Pyx_GIVEREF(__pyx_int_119135242);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119135242);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.constraints is not None or self.elt_methods is not None or self.max_len_error is not None or self.min_len_error is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, None), state
 *     else:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_TupleMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_TupleMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_119135242);
    __Pyx_GIVEREF(__pyx_int_119135242);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_119135242);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_TupleMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11TupleMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_TupleMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TupleMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_TupleMethod, (type(self), 0x719dc0a, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_TupleMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":613
 *     cdef readonly object coercer
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return OptionalMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 613, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":614
 * 
 *     cpdef deserialize(self, object data):
 *         return OptionalMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, value_method, coercer):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_OptionalMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":613
 *     cdef readonly object coercer
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return OptionalMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_14OptionalMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":616
 *         return OptionalMethod_deserialize(self, data)
 * 
 *     def __init__(self, value_method, coercer):             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self.coercer = coercer
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_value_method = 0;
  PyObject *__pyx_v_coercer = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value_method,&__pyx_n_s_coercer,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coercer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 616, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 616, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_value_method = values[0];
    __pyx_v_coercer = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 616, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self), __pyx_v_value_method, __pyx_v_coercer);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_value_method, PyObject *__pyx_v_coercer) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":617
 * 
 *     def __init__(self, value_method, coercer):
 *         self.value_method = value_method             # <<<<<<<<<<<<<<
 *         self.coercer = coercer
 *         self._dispatch = 24
 */
  if (!(likely(((__pyx_v_value_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 617, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_v_self->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":618
 *     def __init__(self, value_method, coercer):
 *         self.value_method = value_method
 *         self.coercer = coercer             # <<<<<<<<<<<<<<
 *         self._dispatch = 24
 * 
 */
  __Pyx_INCREF(__pyx_v_coercer);
  __Pyx_GIVEREF(__pyx_v_coercer);
  __Pyx_GOTREF(__pyx_v_self->coercer);
  __Pyx_DECREF(__pyx_v_self->coercer);
  __pyx_v_self->coercer = __pyx_v_coercer;

  /* "apischema/deserialization/methods.pyx":619
 *         self.value_method = value_method
 *         self.coercer = coercer
 *         self._dispatch = 24             # <<<<<<<<<<<<<<
 * 
 * cdef class UnionByTypeMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 24;

  /* "apischema/deserialization/methods.pyx":616
 *         return OptionalMethod_deserialize(self, data)
 * 
 *     def __init__(self, value_method, coercer):             # <<<<<<<<<<<<<<
 *         self.value_method = value_method
 *         self.coercer = coercer
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":610
 * 
 * cdef class OptionalMethod(DeserializationMethod):
 *     cdef readonly DeserializationMethod value_method             # <<<<<<<<<<<<<<
 *     cdef readonly object coercer
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_12value_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_12value_method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_12value_method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_12value_method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __pyx_r = ((PyObject *)__pyx_v_self->value_method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":611
 * cdef class OptionalMethod(DeserializationMethod):
 *     cdef readonly DeserializationMethod value_method
 *     cdef readonly object coercer             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7coercer_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7coercer_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_7coercer___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_7coercer___get__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __pyx_r = __pyx_v_self->coercer;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.coercer, self.value_method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __Pyx_GIVEREF(__pyx_v_self->coercer);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->coercer);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->value_method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value_method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->value_method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.coercer, self.value_method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.coercer, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.coercer is not None or self.value_method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.coercer, self.value_method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.coercer is not None or self.value_method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->coercer != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->value_method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.coercer is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.coercer is not None or self.value_method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_OptionalMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_242672649);
    __Pyx_GIVEREF(__pyx_int_242672649);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_242672649);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.coercer is not None or self.value_method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, None), state
 *     else:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_OptionalMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_OptionalMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_242672649);
    __Pyx_GIVEREF(__pyx_int_242672649);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_242672649);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_OptionalMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14OptionalMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_OptionalMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_OptionalMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_OptionalMethod, (type(self), 0xe76e409, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_OptionalMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":624
 *     cdef readonly dict method_by_cls
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return UnionByTypeMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":625
 * 
 *     cpdef deserialize(self, object data):
 *         return UnionByTypeMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, method_by_cls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":624
 *     cdef readonly dict method_by_cls
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return UnionByTypeMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":627
 *         return UnionByTypeMethod_deserialize(self, data)
 * 
 *     def __init__(self, method_by_cls):             # <<<<<<<<<<<<<<
 *         self.method_by_cls = method_by_cls
 *         self._dispatch = 25
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method_by_cls = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_by_cls,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_by_cls)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 627, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_method_by_cls = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 627, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self), __pyx_v_method_by_cls);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_method_by_cls) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":628
 * 
 *     def __init__(self, method_by_cls):
 *         self.method_by_cls = method_by_cls             # <<<<<<<<<<<<<<
 *         self._dispatch = 25
 * 
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_method_by_cls))||((__pyx_v_method_by_cls) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_method_by_cls)->tp_name), 0))) __PYX_ERR(0, 628, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method_by_cls;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method_by_cls);
  __Pyx_DECREF(__pyx_v_self->method_by_cls);
  __pyx_v_self->method_by_cls = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":629
 *     def __init__(self, method_by_cls):
 *         self.method_by_cls = method_by_cls
 *         self._dispatch = 25             # <<<<<<<<<<<<<<
 * 
 * cdef class UnionMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 25;

  /* "apischema/deserialization/methods.pyx":627
 *         return UnionByTypeMethod_deserialize(self, data)
 * 
 *     def __init__(self, method_by_cls):             # <<<<<<<<<<<<<<
 *         self.method_by_cls = method_by_cls
 *         self._dispatch = 25
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":622
 * 
 * cdef class UnionByTypeMethod(DeserializationMethod):
 *     cdef readonly dict method_by_cls             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->method_by_cls);
  __pyx_r = __pyx_v_self->method_by_cls;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.method_by_cls)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->method_by_cls);
  __Pyx_GIVEREF(__pyx_v_self->method_by_cls);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->method_by_cls);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.method_by_cls)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.method_by_cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.method_by_cls is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.method_by_cls)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.method_by_cls is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->method_by_cls != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method_by_cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.method_by_cls is not None
 *     if use_setstate:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_UnionByTypeMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89247923);
    __Pyx_GIVEREF(__pyx_int_89247923);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89247923);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.method_by_cls is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, None), state
 *     else:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UnionByTypeMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_UnionByTypeMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89247923);
    __Pyx_GIVEREF(__pyx_int_89247923);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89247923);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UnionByTypeMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_17UnionByTypeMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UnionByTypeMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionByTypeMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UnionByTypeMethod, (type(self), 0x551d0b3, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UnionByTypeMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":634
 *     cdef readonly tuple alt_methods
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return UnionMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_11UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":635
 * 
 *     cpdef deserialize(self, object data):
 *         return UnionMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, alt_methods):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_UnionMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":634
 *     cdef readonly tuple alt_methods
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return UnionMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_11UnionMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":637
 *         return UnionMethod_deserialize(self, data)
 * 
 *     def __init__(self, alt_methods):             # <<<<<<<<<<<<<<
 *         self.alt_methods = alt_methods
 *         self._dispatch = 26
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_alt_methods = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_alt_methods,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_alt_methods)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 637, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_alt_methods = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 637, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self), __pyx_v_alt_methods);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_alt_methods) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":638
 * 
 *     def __init__(self, alt_methods):
 *         self.alt_methods = alt_methods             # <<<<<<<<<<<<<<
 *         self._dispatch = 26
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_alt_methods))||((__pyx_v_alt_methods) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_alt_methods)->tp_name), 0))) __PYX_ERR(0, 638, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_alt_methods;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->alt_methods);
  __Pyx_DECREF(__pyx_v_self->alt_methods);
  __pyx_v_self->alt_methods = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":639
 *     def __init__(self, alt_methods):
 *         self.alt_methods = alt_methods
 *         self._dispatch = 26             # <<<<<<<<<<<<<<
 * 
 * cdef class ConversionMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 26;

  /* "apischema/deserialization/methods.pyx":637
 *         return UnionMethod_deserialize(self, data)
 * 
 *     def __init__(self, alt_methods):             # <<<<<<<<<<<<<<
 *         self.alt_methods = alt_methods
 *         self._dispatch = 26
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":632
 * 
 * cdef class UnionMethod(DeserializationMethod):
 *     cdef readonly tuple alt_methods             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods___get__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->alt_methods);
  __pyx_r = __pyx_v_self->alt_methods;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alt_methods)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->alt_methods);
  __Pyx_GIVEREF(__pyx_v_self->alt_methods);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->alt_methods);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alt_methods)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.alt_methods)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.alt_methods is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.alt_methods)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.alt_methods is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->alt_methods != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alt_methods is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.alt_methods is not None
 *     if use_setstate:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_UnionMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_129754538);
    __Pyx_GIVEREF(__pyx_int_129754538);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_129754538);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alt_methods is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, None), state
 *     else:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UnionMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_UnionMethod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_129754538);
    __Pyx_GIVEREF(__pyx_int_129754538);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_129754538);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UnionMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_11UnionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_UnionMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_UnionMethod, (type(self), 0x7bbe5aa, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_UnionMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":645
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":646
 * 
 *     cpdef deserialize(self, object data):
 *         return ConversionMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, converter, method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConversionMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":645
 *     cdef readonly DeserializationMethod method
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_16ConversionMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":648
 *         return ConversionMethod_deserialize(self, data)
 * 
 *     def __init__(self, converter, method):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_converter = 0;
  PyObject *__pyx_v_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_converter,&__pyx_n_s_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_converter)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 648, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 648, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_converter = values[0];
    __pyx_v_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 648, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self), __pyx_v_converter, __pyx_v_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":649
 * 
 *     def __init__(self, converter, method):
 *         self.converter = converter             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 27
 */
  __Pyx_INCREF(__pyx_v_converter);
  __Pyx_GIVEREF(__pyx_v_converter);
  __Pyx_GOTREF(__pyx_v_self->converter);
  __Pyx_DECREF(__pyx_v_self->converter);
  __pyx_v_self->converter = __pyx_v_converter;

  /* "apischema/deserialization/methods.pyx":650
 *     def __init__(self, converter, method):
 *         self.converter = converter
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self._dispatch = 27
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 650, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":651
 *         self.converter = converter
 *         self.method = method
 *         self._dispatch = 27             # <<<<<<<<<<<<<<
 * 
 * cdef class ConversionWithValueErrorMethod(ConversionMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 27;

  /* "apischema/deserialization/methods.pyx":648
 *         return ConversionMethod_deserialize(self, data)
 * 
 *     def __init__(self, converter, method):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":642
 * 
 * cdef class ConversionMethod(DeserializationMethod):
 *     cdef readonly object converter             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_9converter_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_9converter_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_9converter___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_9converter___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->converter);
  __pyx_r = __pyx_v_self->converter;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":643
 * cdef class ConversionMethod(DeserializationMethod):
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.converter, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->converter);
  __Pyx_GIVEREF(__pyx_v_self->converter);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->converter);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->converter != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConversionMethod); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_258009577);
    __Pyx_GIVEREF(__pyx_int_258009577);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_258009577);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ConversionMethod); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_258009577);
    __Pyx_GIVEREF(__pyx_int_258009577);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_258009577);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16ConversionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":655
 * cdef class ConversionWithValueErrorMethod(ConversionMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionWithValueErrorMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":656
 * 
 *     cpdef deserialize(self, object data):
 *         return ConversionWithValueErrorMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, converter, method):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":655
 * cdef class ConversionWithValueErrorMethod(ConversionMethod):
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionWithValueErrorMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":658
 *         return ConversionWithValueErrorMethod_deserialize(self, data)
 * 
 *     def __init__(self, converter, method):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_converter = 0;
  PyObject *__pyx_v_method = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_converter,&__pyx_n_s_method,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_converter)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 658, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 658, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_converter = values[0];
    __pyx_v_method = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 658, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v_self), __pyx_v_converter, __pyx_v_method);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":659
 * 
 *     def __init__(self, converter, method):
 *         self.converter = converter             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self._dispatch = 28
 */
  __Pyx_INCREF(__pyx_v_converter);
  __Pyx_GIVEREF(__pyx_v_converter);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.converter);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.converter);
  __pyx_v_self->__pyx_base.converter = __pyx_v_converter;

  /* "apischema/deserialization/methods.pyx":660
 *     def __init__(self, converter, method):
 *         self.converter = converter
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self._dispatch = 28
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 660, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.method));
  __pyx_v_self->__pyx_base.method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":661
 *         self.converter = converter
 *         self.method = method
 *         self._dispatch = 28             # <<<<<<<<<<<<<<
 * 
 * cdef class ConversionAlternative():
 */
  __pyx_v_self->__pyx_base.__pyx_base._dispatch = 28;

  /* "apischema/deserialization/methods.pyx":658
 *         return ConversionWithValueErrorMethod_deserialize(self, data)
 * 
 *     def __init__(self, converter, method):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.converter, self.method)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base.__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->__pyx_base.converter);
  __Pyx_GIVEREF(__pyx_v_self->__pyx_base.converter);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->__pyx_base.converter);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.method));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->__pyx_base.method));
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.converter, self.method)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->__pyx_base.converter != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->__pyx_base.method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConversionWithVal); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_258009577);
    __Pyx_GIVEREF(__pyx_int_258009577);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_258009577);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, None), state
 *     else:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionWithValueErrorMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ConversionWithVal); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_258009577);
    __Pyx_GIVEREF(__pyx_int_258009577);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_258009577);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionWithValueErrorMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionWithValueErrorMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionWithValueErrorMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionWithValueErrorMethod, (type(self), 0xf60e9e9, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionWithValueErrorMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":668
 *     cdef readonly bint value_error
 * 
 *     def __init__(self, converter, method, value_error):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_converter = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_value_error = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_converter,&__pyx_n_s_method,&__pyx_n_s_value_error,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_converter)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 668, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 668, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 668, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_converter = values[0];
    __pyx_v_method = values[1];
    __pyx_v_value_error = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 668, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionAlternative.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative___init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self), __pyx_v_converter, __pyx_v_method, __pyx_v_value_error);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative___init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self, PyObject *__pyx_v_converter, PyObject *__pyx_v_method, PyObject *__pyx_v_value_error) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":669
 * 
 *     def __init__(self, converter, method, value_error):
 *         self.converter = converter             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.value_error = value_error
 */
  __Pyx_INCREF(__pyx_v_converter);
  __Pyx_GIVEREF(__pyx_v_converter);
  __Pyx_GOTREF(__pyx_v_self->converter);
  __Pyx_DECREF(__pyx_v_self->converter);
  __pyx_v_self->converter = __pyx_v_converter;

  /* "apischema/deserialization/methods.pyx":670
 *     def __init__(self, converter, method, value_error):
 *         self.converter = converter
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.value_error = value_error
 * 
 */
  if (!(likely(((__pyx_v_method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 670, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->method));
  __pyx_v_self->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":671
 *         self.converter = converter
 *         self.method = method
 *         self.value_error = value_error             # <<<<<<<<<<<<<<
 * 
 * cdef class ConversionUnionMethod(DeserializationMethod):
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_value_error); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 671, __pyx_L1_error)
  __pyx_v_self->value_error = __pyx_t_2;

  /* "apischema/deserialization/methods.pyx":668
 *     cdef readonly bint value_error
 * 
 *     def __init__(self, converter, method, value_error):             # <<<<<<<<<<<<<<
 *         self.converter = converter
 *         self.method = method
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionAlternative.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":664
 * 
 * cdef class ConversionAlternative():
 *     cdef readonly object converter             # <<<<<<<<<<<<<<
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint value_error
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_9converter_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_9converter_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_9converter___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_9converter___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->converter);
  __pyx_r = __pyx_v_self->converter;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":665
 * cdef class ConversionAlternative():
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method             # <<<<<<<<<<<<<<
 *     cdef readonly bint value_error
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_6method___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_6method___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __pyx_r = ((PyObject *)__pyx_v_self->method);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":666
 *     cdef readonly object converter
 *     cdef readonly DeserializationMethod method
 *     cdef readonly bint value_error             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, converter, method, value_error):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->value_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionAlternative.value_error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_2__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_2__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.converter, self.method, self.value_error)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->value_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->converter);
  __Pyx_GIVEREF(__pyx_v_self->converter);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->converter);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->method));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->method));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.converter, self.method, self.value_error)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self.converter, self.method, self.value_error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self.converter, self.method, self.value_error)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->converter != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->method) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConversionAlterna); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_262512166);
    __Pyx_GIVEREF(__pyx_int_262512166);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_262512166);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.converter is not None or self.method is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, None), state
 *     else:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionAlternative__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_ConversionAlterna); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_262512166);
    __Pyx_GIVEREF(__pyx_int_262512166);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_262512166);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionAlternative.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionAlternative__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_4__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionAlternative_4__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionAlternative__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionAlternative__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionAlternative, (type(self), 0xfa59e26, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionAlternative__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionAlternative.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":676
 *     cdef readonly tuple alternatives
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionUnionMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":677
 * 
 *     cpdef deserialize(self, object data):
 *         return ConversionUnionMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, alternatives):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_ConversionUnionMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":676
 *     cdef readonly tuple alternatives
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return ConversionUnionMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":679
 *         return ConversionUnionMethod_deserialize(self, data)
 * 
 *     def __init__(self, alternatives):             # <<<<<<<<<<<<<<
 *         self.alternatives = alternatives
 *         self._dispatch = 29
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_alternatives = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_alternatives,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_alternatives)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 679, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_alternatives = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 679, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self), __pyx_v_alternatives);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_alternatives) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":680
 * 
 *     def __init__(self, alternatives):
 *         self.alternatives = alternatives             # <<<<<<<<<<<<<<
 *         self._dispatch = 29
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_alternatives))||((__pyx_v_alternatives) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_alternatives)->tp_name), 0))) __PYX_ERR(0, 680, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_alternatives;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->alternatives);
  __Pyx_DECREF(__pyx_v_self->alternatives);
  __pyx_v_self->alternatives = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":681
 *     def __init__(self, alternatives):
 *         self.alternatives = alternatives
 *         self._dispatch = 29             # <<<<<<<<<<<<<<
 * 
 * cdef class DiscriminatorMethod(DeserializationMethod):
 */
  __pyx_v_self->__pyx_base._dispatch = 29;

  /* "apischema/deserialization/methods.pyx":679
 *         return ConversionUnionMethod_deserialize(self, data)
 * 
 *     def __init__(self, alternatives):             # <<<<<<<<<<<<<<
 *         self.alternatives = alternatives
 *         self._dispatch = 29
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":674
 * 
 * cdef class ConversionUnionMethod(DeserializationMethod):
 *     cdef readonly tuple alternatives             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives___get__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->alternatives);
  __pyx_r = __pyx_v_self->alternatives;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alternatives)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->alternatives);
  __Pyx_GIVEREF(__pyx_v_self->alternatives);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->alternatives);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alternatives)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.alternatives)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.alternatives is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.alternatives)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.alternatives is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->alternatives != ((PyObject*)Py_None));
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alternatives is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.alternatives is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_ConversionUnionMe); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_67187364);
    __Pyx_GIVEREF(__pyx_int_67187364);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_67187364);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alternatives is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, None), state
 *     else:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionUnionMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ConversionUnionMe); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_67187364);
    __Pyx_GIVEREF(__pyx_int_67187364);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_67187364);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_5 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionUnionMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_21ConversionUnionMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConversionUnionMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionUnionMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConversionUnionMethod, (type(self), 0x40132a4, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConversionUnionMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":689
 *     cdef readonly object error
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return DiscriminatorMethod_deserialize(self, data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_f_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_data, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deserialize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_1deserialize)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "apischema/deserialization/methods.pyx":690
 * 
 *     cpdef deserialize(self, object data):
 *         return DiscriminatorMethod_deserialize(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, alias, mapping, missing, error):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_DiscriminatorMethod_deserialize(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":689
 *     cdef readonly object error
 * 
 *     cpdef deserialize(self, object data):             # <<<<<<<<<<<<<<
 *         return DiscriminatorMethod_deserialize(self, data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_1deserialize(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserialize (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self), ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":692
 *         return DiscriminatorMethod_deserialize(self, data)
 * 
 *     def __init__(self, alias, mapping, missing, error):             # <<<<<<<<<<<<<<
 *         self.alias = alias
 *         self.mapping = mapping
 */

/* Python wrapper */
static int __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_alias = 0;
  PyObject *__pyx_v_mapping = 0;
  PyObject *__pyx_v_missing = 0;
  PyObject *__pyx_v_error = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_alias,&__pyx_n_s_mapping,&__pyx_n_s_missing,&__pyx_n_s_error,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_alias)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mapping)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_missing)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 692, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 692, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 692, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_alias = values[0];
    __pyx_v_mapping = values[1];
    __pyx_v_missing = values[2];
    __pyx_v_error = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 692, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_2__init__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self), __pyx_v_alias, __pyx_v_mapping, __pyx_v_missing, __pyx_v_error);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_2__init__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_alias, PyObject *__pyx_v_mapping, PyObject *__pyx_v_missing, PyObject *__pyx_v_error) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "apischema/deserialization/methods.pyx":693
 * 
 *     def __init__(self, alias, mapping, missing, error):
 *         self.alias = alias             # <<<<<<<<<<<<<<
 *         self.mapping = mapping
 *         self.missing = missing
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_alias))||((__pyx_v_alias) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_alias)->tp_name), 0))) __PYX_ERR(0, 693, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_alias;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->alias);
  __Pyx_DECREF(__pyx_v_self->alias);
  __pyx_v_self->alias = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":694
 *     def __init__(self, alias, mapping, missing, error):
 *         self.alias = alias
 *         self.mapping = mapping             # <<<<<<<<<<<<<<
 *         self.missing = missing
 *         self.error = error
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_mapping))||((__pyx_v_mapping) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_mapping)->tp_name), 0))) __PYX_ERR(0, 694, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_mapping;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->mapping);
  __Pyx_DECREF(__pyx_v_self->mapping);
  __pyx_v_self->mapping = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":695
 *         self.alias = alias
 *         self.mapping = mapping
 *         self.missing = missing             # <<<<<<<<<<<<<<
 *         self.error = error
 *         self._dispatch = 30
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_missing))||((__pyx_v_missing) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_missing)->tp_name), 0))) __PYX_ERR(0, 695, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_missing;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->missing);
  __Pyx_DECREF(__pyx_v_self->missing);
  __pyx_v_self->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":696
 *         self.mapping = mapping
 *         self.missing = missing
 *         self.error = error             # <<<<<<<<<<<<<<
 *         self._dispatch = 30
 * 
 */
  __Pyx_INCREF(__pyx_v_error);
  __Pyx_GIVEREF(__pyx_v_error);
  __Pyx_GOTREF(__pyx_v_self->error);
  __Pyx_DECREF(__pyx_v_self->error);
  __pyx_v_self->error = __pyx_v_error;

  /* "apischema/deserialization/methods.pyx":697
 *         self.missing = missing
 *         self.error = error
 *         self._dispatch = 30             # <<<<<<<<<<<<<<
 * 
 * cpdef inline to_hashable(object data):
 */
  __pyx_v_self->__pyx_base._dispatch = 30;

  /* "apischema/deserialization/methods.pyx":692
 *         return DiscriminatorMethod_deserialize(self, data)
 * 
 *     def __init__(self, alias, mapping, missing, error):             # <<<<<<<<<<<<<<
 *         self.alias = alias
 *         self.mapping = mapping
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":684
 * 
 * cdef class DiscriminatorMethod(DeserializationMethod):
 *     cdef readonly str alias             # <<<<<<<<<<<<<<
 *     cdef readonly dict mapping
 *     cdef readonly str missing
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->alias);
  __pyx_r = __pyx_v_self->alias;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":685
 * cdef class DiscriminatorMethod(DeserializationMethod):
 *     cdef readonly str alias
 *     cdef readonly dict mapping             # <<<<<<<<<<<<<<
 *     cdef readonly str missing
 *     cdef readonly object error
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->mapping);
  __pyx_r = __pyx_v_self->mapping;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":686
 *     cdef readonly str alias
 *     cdef readonly dict mapping
 *     cdef readonly str missing             # <<<<<<<<<<<<<<
 *     cdef readonly object error
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->missing);
  __pyx_r = __pyx_v_self->missing;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":687
 *     cdef readonly dict mapping
 *     cdef readonly str missing
 *     cdef readonly object error             # <<<<<<<<<<<<<<
 * 
 *     cpdef deserialize(self, object data):
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error___get__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error___get__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->error);
  __pyx_r = __pyx_v_self->error;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_4__reduce_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_4__reduce_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alias, self.error, self.mapping, self.missing)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->__pyx_base._dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->alias);
  __Pyx_GIVEREF(__pyx_v_self->alias);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->alias);
  __Pyx_INCREF(__pyx_v_self->error);
  __Pyx_GIVEREF(__pyx_v_self->error);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->error);
  __Pyx_INCREF(__pyx_v_self->mapping);
  __Pyx_GIVEREF(__pyx_v_self->mapping);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->mapping);
  __Pyx_INCREF(__pyx_v_self->missing);
  __Pyx_GIVEREF(__pyx_v_self->missing);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->missing);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._dispatch, self.alias, self.error, self.mapping, self.missing)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._dispatch, self.alias, self.error, self.mapping, self.missing)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self.alias is not None or self.error is not None or self.mapping is not None or self.missing is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._dispatch, self.alias, self.error, self.mapping, self.missing)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self.alias is not None or self.error is not None or self.mapping is not None or self.missing is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->alias != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->error != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->mapping != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->missing != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alias is not None or self.error is not None or self.mapping is not None or self.missing is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self.alias is not None or self.error is not None or self.mapping is not None or self.missing is not None
 *     if use_setstate:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_DiscriminatorMeth); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89106541);
    __Pyx_GIVEREF(__pyx_int_89106541);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89106541);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.alias is not None or self.error is not None or self.mapping is not None or self.missing is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, None), state
 *     else:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DiscriminatorMethod__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_DiscriminatorMeth); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_89106541);
    __Pyx_GIVEREF(__pyx_int_89106541);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_89106541);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DiscriminatorMethod__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_6__setstate_cython__(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_19DiscriminatorMethod_6__setstate_cython__(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_DiscriminatorMethod__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DiscriminatorMethod__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_DiscriminatorMethod, (type(self), 0x54fa86d, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_DiscriminatorMethod__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":699
 *         self._dispatch = 30
 * 
 * cpdef inline to_hashable(object data):             # <<<<<<<<<<<<<<
 *     if isinstance(data, list):
 *         return tuple(map(to_hashable, data))
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_1to_hashable(PyObject *__pyx_self, PyObject *__pyx_v_data); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_to_hashable(PyObject *__pyx_v_data, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_7genexpr__pyx_v_k = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_hashable", 0);

  /* "apischema/deserialization/methods.pyx":700
 * 
 * cpdef inline to_hashable(object data):
 *     if isinstance(data, list):             # <<<<<<<<<<<<<<
 *         return tuple(map(to_hashable, data))
 *     elif isinstance(data, dict):
 */
  __pyx_t_1 = PyList_Check(__pyx_v_data); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":701
 * cpdef inline to_hashable(object data):
 *     if isinstance(data, list):
 *         return tuple(map(to_hashable, data))             # <<<<<<<<<<<<<<
 *     elif isinstance(data, dict):
 *         # Cython doesn't support tuple comprehension yet -> intermediate list
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_to_hashable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_data);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":700
 * 
 * cpdef inline to_hashable(object data):
 *     if isinstance(data, list):             # <<<<<<<<<<<<<<
 *         return tuple(map(to_hashable, data))
 *     elif isinstance(data, dict):
 */
  }

  /* "apischema/deserialization/methods.pyx":702
 *     if isinstance(data, list):
 *         return tuple(map(to_hashable, data))
 *     elif isinstance(data, dict):             # <<<<<<<<<<<<<<
 *         # Cython doesn't support tuple comprehension yet -> intermediate list
 *         return tuple([(k, to_hashable(data[k])) for k in sorted(data)])
 */
  __pyx_t_2 = PyDict_Check(__pyx_v_data); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "apischema/deserialization/methods.pyx":704
 *     elif isinstance(data, dict):
 *         # Cython doesn't support tuple comprehension yet -> intermediate list
 *         return tuple([(k, to_hashable(data[k])) for k in sorted(data)])             # <<<<<<<<<<<<<<
 *     else:
 *         return data
 */
    __Pyx_XDECREF(__pyx_r);
    { /* enter inner scope */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 704, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_List(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = ((PyObject*)__pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_6 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 704, __pyx_L6_error)
      if (unlikely(__pyx_t_3 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 704, __pyx_L6_error)
      }
      __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      for (;;) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 704, __pyx_L6_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
        __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_k, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_7genexpr__pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_8 = __pyx_f_9apischema_15deserialization_7methods_to_hashable(__pyx_t_3, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_7genexpr__pyx_v_k);
        __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_k);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_7genexpr__pyx_v_k);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
        __pyx_t_8 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 704, __pyx_L6_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0;
      goto __pyx_L9_exit_scope;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0;
      goto __pyx_L1_error;
      __pyx_L9_exit_scope:;
    } /* exit inner scope */
    __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":702
 *     if isinstance(data, list):
 *         return tuple(map(to_hashable, data))
 *     elif isinstance(data, dict):             # <<<<<<<<<<<<<<
 *         # Cython doesn't support tuple comprehension yet -> intermediate list
 *         return tuple([(k, to_hashable(data[k])) for k in sorted(data)])
 */
  }

  /* "apischema/deserialization/methods.pyx":706
 *         return tuple([(k, to_hashable(data[k])) for k in sorted(data)])
 *     else:
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cpdef inline format_error(object err, object data):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_data);
    __pyx_r = __pyx_v_data;
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":699
 *         self._dispatch = 30
 * 
 * cpdef inline to_hashable(object data):             # <<<<<<<<<<<<<<
 *     if isinstance(data, list):
 *         return tuple(map(to_hashable, data))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.to_hashable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_1to_hashable(PyObject *__pyx_self, PyObject *__pyx_v_data); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_1to_hashable(PyObject *__pyx_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_hashable (wrapper)", 0);
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_to_hashable(__pyx_self, ((PyObject *)__pyx_v_data));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_to_hashable(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_hashable", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_to_hashable(__pyx_v_data, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.to_hashable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":708
 *         return data
 * 
 * cpdef inline format_error(object err, object data):             # <<<<<<<<<<<<<<
 *     return err if isinstance(err, str) else err(data)
 * 
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_3format_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_format_error(PyObject *__pyx_v_err, PyObject *__pyx_v_data, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("format_error", 0);

  /* "apischema/deserialization/methods.pyx":709
 * 
 * cpdef inline format_error(object err, object data):
 *     return err if isinstance(err, str) else err(data)             # <<<<<<<<<<<<<<
 * 
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyUnicode_Check(__pyx_v_err); 
  if ((__pyx_t_2 != 0)) {
    __Pyx_INCREF(__pyx_v_err);
    __pyx_t_1 = __pyx_v_err;
  } else {
    __Pyx_INCREF(__pyx_v_err);
    __pyx_t_4 = __pyx_v_err; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 709, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":708
 *         return data
 * 
 * cpdef inline format_error(object err, object data):             # <<<<<<<<<<<<<<
 *     return err if isinstance(err, str) else err(data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.format_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_3format_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_3format_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_err = 0;
  PyObject *__pyx_v_data = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("format_error (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_err,&__pyx_n_s_data,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_err)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("format_error", 1, 2, 2, 1); __PYX_ERR(0, 708, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "format_error") < 0)) __PYX_ERR(0, 708, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_err = values[0];
    __pyx_v_data = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("format_error", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 708, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.format_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_2format_error(__pyx_self, __pyx_v_err, __pyx_v_data);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_2format_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_err, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("format_error", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_v_err, __pyx_v_data, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.format_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":711
 *     return err if isinstance(err, str) else err(data)
 * 
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):             # <<<<<<<<<<<<<<
 *     for i in range(len(constraints)):
 *         constraint: Constraint = constraints[i]
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5validate_constraints(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_validate_constraints(PyObject *__pyx_v_data, PyObject *__pyx_v_constraints, PyObject *__pyx_v_children_errors, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_i = NULL;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_constraint = 0;
  PyObject *__pyx_v_errors = 0;
  PyObject *__pyx_v_j = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate_constraints", 0);

  /* "apischema/deserialization/methods.pyx":712
 * 
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):
 *     for i in range(len(constraints)):             # <<<<<<<<<<<<<<
 *         constraint: Constraint = constraints[i]
 *         if not Constraint_validate(constraint, data):
 */
  if (unlikely(__pyx_v_constraints == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 712, __pyx_L1_error)
  }
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_constraints); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 712, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 712, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 712, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 712, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":713
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):
 *     for i in range(len(constraints)):
 *         constraint: Constraint = constraints[i]             # <<<<<<<<<<<<<<
 *         if not Constraint_validate(constraint, data):
 *             errors: list = [format_error(constraint.error, data)]
 */
    if (unlikely(__pyx_v_constraints == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 713, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_constraints, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_9apischema_15deserialization_7methods_Constraint))))) __PYX_ERR(0, 713, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_constraint, ((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":714
 *     for i in range(len(constraints)):
 *         constraint: Constraint = constraints[i]
 *         if not Constraint_validate(constraint, data):             # <<<<<<<<<<<<<<
 *             errors: list = [format_error(constraint.error, data)]
 *             for j in range(i + 1, len(constraints)):
 */
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_Constraint_validate(__pyx_v_constraint, __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 714, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 714, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = ((!__pyx_t_5) != 0);
    if (__pyx_t_6) {

      /* "apischema/deserialization/methods.pyx":715
 *         constraint: Constraint = constraints[i]
 *         if not Constraint_validate(constraint, data):
 *             errors: list = [format_error(constraint.error, data)]             # <<<<<<<<<<<<<<
 *             for j in range(i + 1, len(constraints)):
 *                 constraint = constraints[j]
 */
      __pyx_t_3 = __pyx_v_constraint->error;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_3, __pyx_v_data, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_7);
      PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_v_errors = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":716
 *         if not Constraint_validate(constraint, data):
 *             errors: list = [format_error(constraint.error, data)]
 *             for j in range(i + 1, len(constraints)):             # <<<<<<<<<<<<<<
 *                 constraint = constraints[j]
 *                 if not Constraint_validate(constraint, data):
 */
      __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__pyx_v_constraints == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
        __PYX_ERR(0, 716, __pyx_L1_error)
      }
      __pyx_t_8 = PyTuple_GET_SIZE(__pyx_v_constraints); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 716, __pyx_L1_error)
      __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7);
      __pyx_t_3 = 0;
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
        __pyx_t_9 = __pyx_t_7; __Pyx_INCREF(__pyx_t_9); __pyx_t_8 = 0;
        __pyx_t_10 = NULL;
      } else {
        __pyx_t_8 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 716, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 716, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      for (;;) {
        if (likely(!__pyx_t_10)) {
          if (likely(PyList_CheckExact(__pyx_t_9))) {
            if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_9)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          } else {
            if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_9, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          }
        } else {
          __pyx_t_7 = __pyx_t_10(__pyx_t_9);
          if (unlikely(!__pyx_t_7)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 716, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":717
 *             errors: list = [format_error(constraint.error, data)]
 *             for j in range(i + 1, len(constraints)):
 *                 constraint = constraints[j]             # <<<<<<<<<<<<<<
 *                 if not Constraint_validate(constraint, data):
 *                     errors.append(format_error(constraint.error, data))
 */
        if (unlikely(__pyx_v_constraints == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 717, __pyx_L1_error)
        }
        __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_constraints, __pyx_v_j); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_9apischema_15deserialization_7methods_Constraint))))) __PYX_ERR(0, 717, __pyx_L1_error)
        __Pyx_DECREF_SET(__pyx_v_constraint, ((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_t_7));
        __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":718
 *             for j in range(i + 1, len(constraints)):
 *                 constraint = constraints[j]
 *                 if not Constraint_validate(constraint, data):             # <<<<<<<<<<<<<<
 *                     errors.append(format_error(constraint.error, data))
 *             raise ValidationError(errors, children_errors or {})
 */
        __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_Constraint_validate(__pyx_v_constraint, __pyx_v_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 718, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 718, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_5 = ((!__pyx_t_6) != 0);
        if (__pyx_t_5) {

          /* "apischema/deserialization/methods.pyx":719
 *                 constraint = constraints[j]
 *                 if not Constraint_validate(constraint, data):
 *                     errors.append(format_error(constraint.error, data))             # <<<<<<<<<<<<<<
 *             raise ValidationError(errors, children_errors or {})
 *     if children_errors:
 */
          __pyx_t_7 = __pyx_v_constraint->error;
          __Pyx_INCREF(__pyx_t_7);
          __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_7, __pyx_v_data, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 719, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_3); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 719, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":718
 *             for j in range(i + 1, len(constraints)):
 *                 constraint = constraints[j]
 *                 if not Constraint_validate(constraint, data):             # <<<<<<<<<<<<<<
 *                     errors.append(format_error(constraint.error, data))
 *             raise ValidationError(errors, children_errors or {})
 */
        }

        /* "apischema/deserialization/methods.pyx":716
 *         if not Constraint_validate(constraint, data):
 *             errors: list = [format_error(constraint.error, data)]
 *             for j in range(i + 1, len(constraints)):             # <<<<<<<<<<<<<<
 *                 constraint = constraints[j]
 *                 if not Constraint_validate(constraint, data):
 */
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "apischema/deserialization/methods.pyx":720
 *                 if not Constraint_validate(constraint, data):
 *                     errors.append(format_error(constraint.error, data))
 *             raise ValidationError(errors, children_errors or {})             # <<<<<<<<<<<<<<
 *     if children_errors:
 *         raise ValidationError([], children_errors)
 */
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 720, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_children_errors); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 720, __pyx_L1_error)
      if (!__pyx_t_5) {
      } else {
        __Pyx_INCREF(__pyx_v_children_errors);
        __pyx_t_7 = __pyx_v_children_errors;
        goto __pyx_L9_bool_binop_done;
      }
      __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 720, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_t_12);
      __pyx_t_7 = __pyx_t_12;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_L9_bool_binop_done:;
      __pyx_t_12 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_errors, __pyx_t_7};
        __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 720, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_errors, __pyx_t_7};
        __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 720, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 720, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_12) {
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL;
        }
        __Pyx_INCREF(__pyx_v_errors);
        __Pyx_GIVEREF(__pyx_v_errors);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_13, __pyx_v_errors);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_13, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 720, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(0, 720, __pyx_L1_error)

      /* "apischema/deserialization/methods.pyx":714
 *     for i in range(len(constraints)):
 *         constraint: Constraint = constraints[i]
 *         if not Constraint_validate(constraint, data):             # <<<<<<<<<<<<<<
 *             errors: list = [format_error(constraint.error, data)]
 *             for j in range(i + 1, len(constraints)):
 */
    }

    /* "apischema/deserialization/methods.pyx":712
 * 
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):
 *     for i in range(len(constraints)):             # <<<<<<<<<<<<<<
 *         constraint: Constraint = constraints[i]
 *         if not Constraint_validate(constraint, data):
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":721
 *                     errors.append(format_error(constraint.error, data))
 *             raise ValidationError(errors, children_errors or {})
 *     if children_errors:             # <<<<<<<<<<<<<<
 *         raise ValidationError([], children_errors)
 *     return data
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_children_errors); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 721, __pyx_L1_error)
  if (unlikely(__pyx_t_5)) {

    /* "apischema/deserialization/methods.pyx":722
 *             raise ValidationError(errors, children_errors or {})
 *     if children_errors:
 *         raise ValidationError([], children_errors)             # <<<<<<<<<<<<<<
 *     return data
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = NULL;
    __pyx_t_13 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
        __pyx_t_13 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_3, __pyx_v_children_errors};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
      PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_3, __pyx_v_children_errors};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_14) {
        __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_14); __pyx_t_14 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_13, __pyx_t_3);
      __Pyx_INCREF(__pyx_v_children_errors);
      __Pyx_GIVEREF(__pyx_v_children_errors);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_13, __pyx_v_children_errors);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 722, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":721
 *                     errors.append(format_error(constraint.error, data))
 *             raise ValidationError(errors, children_errors or {})
 *     if children_errors:             # <<<<<<<<<<<<<<
 *         raise ValidationError([], children_errors)
 *     return data
 */
  }

  /* "apischema/deserialization/methods.pyx":723
 *     if children_errors:
 *         raise ValidationError([], children_errors)
 *     return data             # <<<<<<<<<<<<<<
 * 
 * cpdef inline set_child_error(object errors, object key, object error):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":711
 *     return err if isinstance(err, str) else err(data)
 * 
 * cpdef inline validate_constraints(object data, tuple constraints, object children_errors):             # <<<<<<<<<<<<<<
 *     for i in range(len(constraints)):
 *         constraint: Constraint = constraints[i]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.validate_constraints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF((PyObject *)__pyx_v_constraint);
  __Pyx_XDECREF(__pyx_v_errors);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5validate_constraints(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_5validate_constraints(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_constraints = 0;
  PyObject *__pyx_v_children_errors = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("validate_constraints (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_constraints,&__pyx_n_s_children_errors,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_constraints)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("validate_constraints", 1, 3, 3, 1); __PYX_ERR(0, 711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_children_errors)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("validate_constraints", 1, 3, 3, 2); __PYX_ERR(0, 711, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "validate_constraints") < 0)) __PYX_ERR(0, 711, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_data = values[0];
    __pyx_v_constraints = ((PyObject*)values[1]);
    __pyx_v_children_errors = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("validate_constraints", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 711, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.validate_constraints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_constraints), (&PyTuple_Type), 1, "constraints", 1))) __PYX_ERR(0, 711, __pyx_L1_error)
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_4validate_constraints(__pyx_self, __pyx_v_data, __pyx_v_constraints, __pyx_v_children_errors);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_4validate_constraints(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_constraints, PyObject *__pyx_v_children_errors) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("validate_constraints", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data, __pyx_v_constraints, __pyx_v_children_errors, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.validate_constraints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":725
 *     return data
 * 
 * cpdef inline set_child_error(object errors, object key, object error):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return {key: error}
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_7set_child_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_set_child_error(PyObject *__pyx_v_errors, PyObject *__pyx_v_key, PyObject *__pyx_v_error, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_child_error", 0);

  /* "apischema/deserialization/methods.pyx":726
 * 
 * cpdef inline set_child_error(object errors, object key, object error):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return {key: error}
 *     else:
 */
  __pyx_t_1 = (__pyx_v_errors == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":727
 * cpdef inline set_child_error(object errors, object key, object error):
 *     if errors is None:
 *         return {key: error}             # <<<<<<<<<<<<<<
 *     else:
 *         errors[key] = error
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_v_key, __pyx_v_error) < 0) __PYX_ERR(0, 727, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":726
 * 
 * cpdef inline set_child_error(object errors, object key, object error):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return {key: error}
 *     else:
 */
  }

  /* "apischema/deserialization/methods.pyx":729
 *         return {key: error}
 *     else:
 *         errors[key] = error             # <<<<<<<<<<<<<<
 *         return errors
 * 
 */
  /*else*/ {
    if (unlikely(PyObject_SetItem(__pyx_v_errors, __pyx_v_key, __pyx_v_error) < 0)) __PYX_ERR(0, 729, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":730
 *     else:
 *         errors[key] = error
 *         return errors             # <<<<<<<<<<<<<<
 * 
 * cpdef inline extend_errors(object errors, object messages):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_errors);
    __pyx_r = __pyx_v_errors;
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":725
 *     return data
 * 
 * cpdef inline set_child_error(object errors, object key, object error):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return {key: error}
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.set_child_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_7set_child_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_7set_child_error(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_errors = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_error = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_child_error (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errors,&__pyx_n_s_key,&__pyx_n_s_error,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_errors)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_child_error", 1, 3, 3, 1); __PYX_ERR(0, 725, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_child_error", 1, 3, 3, 2); __PYX_ERR(0, 725, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_child_error") < 0)) __PYX_ERR(0, 725, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_errors = values[0];
    __pyx_v_key = values[1];
    __pyx_v_error = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_child_error", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 725, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.set_child_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_6set_child_error(__pyx_self, __pyx_v_errors, __pyx_v_key, __pyx_v_error);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_6set_child_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_key, PyObject *__pyx_v_error) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_child_error", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_errors, __pyx_v_key, __pyx_v_error, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.set_child_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":732
 *         return errors
 * 
 * cpdef inline extend_errors(object errors, object messages):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return list(messages)
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9extend_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_extend_errors(PyObject *__pyx_v_errors, PyObject *__pyx_v_messages, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("extend_errors", 0);

  /* "apischema/deserialization/methods.pyx":733
 * 
 * cpdef inline extend_errors(object errors, object messages):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return list(messages)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_errors == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":734
 * cpdef inline extend_errors(object errors, object messages):
 *     if errors is None:
 *         return list(messages)             # <<<<<<<<<<<<<<
 *     else:
 *         errors.extend(messages)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PySequence_List(__pyx_v_messages); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 734, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":733
 * 
 * cpdef inline extend_errors(object errors, object messages):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return list(messages)
 *     else:
 */
  }

  /* "apischema/deserialization/methods.pyx":736
 *         return list(messages)
 *     else:
 *         errors.extend(messages)             # <<<<<<<<<<<<<<
 *         return errors
 * 
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_errors, __pyx_n_s_extend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_messages) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_messages);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":737
 *     else:
 *         errors.extend(messages)
 *         return errors             # <<<<<<<<<<<<<<
 * 
 * cpdef inline update_children_errors(object errors, dict children):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_errors);
    __pyx_r = __pyx_v_errors;
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":732
 *         return errors
 * 
 * cpdef inline extend_errors(object errors, object messages):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return list(messages)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.extend_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9extend_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_9extend_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_errors = 0;
  PyObject *__pyx_v_messages = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("extend_errors (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errors,&__pyx_n_s_messages,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_errors)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_messages)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("extend_errors", 1, 2, 2, 1); __PYX_ERR(0, 732, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extend_errors") < 0)) __PYX_ERR(0, 732, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_errors = values[0];
    __pyx_v_messages = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("extend_errors", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 732, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.extend_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_8extend_errors(__pyx_self, __pyx_v_errors, __pyx_v_messages);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_8extend_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_messages) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("extend_errors", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_extend_errors(__pyx_v_errors, __pyx_v_messages, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.extend_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":739
 *         return errors
 * 
 * cpdef inline update_children_errors(object errors, dict children):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return dict(children)
 */

static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11update_children_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_update_children_errors(PyObject *__pyx_v_errors, PyObject *__pyx_v_children, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("update_children_errors", 0);

  /* "apischema/deserialization/methods.pyx":740
 * 
 * cpdef inline update_children_errors(object errors, dict children):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return dict(children)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_errors == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":741
 * cpdef inline update_children_errors(object errors, dict children):
 *     if errors is None:
 *         return dict(children)             # <<<<<<<<<<<<<<
 *     else:
 *         errors.update(children)
 */
    __Pyx_XDECREF(__pyx_r);
    if (unlikely(__pyx_v_children == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
      __PYX_ERR(0, 741, __pyx_L1_error)
    }
    __pyx_t_3 = PyDict_Copy(__pyx_v_children); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":740
 * 
 * cpdef inline update_children_errors(object errors, dict children):
 *     if errors is None:             # <<<<<<<<<<<<<<
 *         return dict(children)
 *     else:
 */
  }

  /* "apischema/deserialization/methods.pyx":743
 *         return dict(children)
 *     else:
 *         errors.update(children)             # <<<<<<<<<<<<<<
 *         return errors
 * 
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_errors, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_children) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_children);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":744
 *     else:
 *         errors.update(children)
 *         return errors             # <<<<<<<<<<<<<<
 * 
 * cdef inline MinimumConstraint_validate(MinimumConstraint self, long data):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_errors);
    __pyx_r = __pyx_v_errors;
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":739
 *         return errors
 * 
 * cpdef inline update_children_errors(object errors, dict children):             # <<<<<<<<<<<<<<
 *     if errors is None:
 *         return dict(children)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.update_children_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11update_children_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_11update_children_errors(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_errors = 0;
  PyObject *__pyx_v_children = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("update_children_errors (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errors,&__pyx_n_s_children,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_errors)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_children)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("update_children_errors", 1, 2, 2, 1); __PYX_ERR(0, 739, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "update_children_errors") < 0)) __PYX_ERR(0, 739, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_errors = values[0];
    __pyx_v_children = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("update_children_errors", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 739, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.update_children_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_children), (&PyDict_Type), 1, "children", 1))) __PYX_ERR(0, 739, __pyx_L1_error)
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_10update_children_errors(__pyx_self, __pyx_v_errors, __pyx_v_children);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_10update_children_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_errors, PyObject *__pyx_v_children) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("update_children_errors", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_update_children_errors(__pyx_v_errors, __pyx_v_children, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.update_children_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":746
 *         return errors
 * 
 * cdef inline MinimumConstraint_validate(MinimumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data >= self.minimum
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v_self, long __pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MinimumConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":747
 * 
 * cdef inline MinimumConstraint_validate(MinimumConstraint self, long data):
 *         return data >= self.minimum             # <<<<<<<<<<<<<<
 * 
 * cdef inline MaximumConstraint_validate(MaximumConstraint self, long data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_data >= __pyx_v_self->minimum)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":746
 *         return errors
 * 
 * cdef inline MinimumConstraint_validate(MinimumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data >= self.minimum
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinimumConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":749
 *         return data >= self.minimum
 * 
 * cdef inline MaximumConstraint_validate(MaximumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data <= self.maximum
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v_self, long __pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MaximumConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":750
 * 
 * cdef inline MaximumConstraint_validate(MaximumConstraint self, long data):
 *         return data <= self.maximum             # <<<<<<<<<<<<<<
 * 
 * cdef inline ExclusiveMinimumConstraint_validate(ExclusiveMinimumConstraint self, long data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_data <= __pyx_v_self->maximum)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":749
 *         return data >= self.minimum
 * 
 * cdef inline MaximumConstraint_validate(MaximumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data <= self.maximum
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaximumConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":752
 *         return data <= self.maximum
 * 
 * cdef inline ExclusiveMinimumConstraint_validate(ExclusiveMinimumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data > self.exc_min
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v_self, long __pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ExclusiveMinimumConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":753
 * 
 * cdef inline ExclusiveMinimumConstraint_validate(ExclusiveMinimumConstraint self, long data):
 *         return data > self.exc_min             # <<<<<<<<<<<<<<
 * 
 * cdef inline ExclusiveMaximumConstraint_validate(ExclusiveMaximumConstraint self, long data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_data > __pyx_v_self->exc_min)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":752
 *         return data <= self.maximum
 * 
 * cdef inline ExclusiveMinimumConstraint_validate(ExclusiveMinimumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data > self.exc_min
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMinimumConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":755
 *         return data > self.exc_min
 * 
 * cdef inline ExclusiveMaximumConstraint_validate(ExclusiveMaximumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data < self.exc_max
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v_self, long __pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ExclusiveMaximumConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":756
 * 
 * cdef inline ExclusiveMaximumConstraint_validate(ExclusiveMaximumConstraint self, long data):
 *         return data < self.exc_max             # <<<<<<<<<<<<<<
 * 
 * cdef inline MultipleOfConstraint_validate(MultipleOfConstraint self, long data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_data < __pyx_v_self->exc_max)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":755
 *         return data > self.exc_min
 * 
 * cdef inline ExclusiveMaximumConstraint_validate(ExclusiveMaximumConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return data < self.exc_max
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.ExclusiveMaximumConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":758
 *         return data < self.exc_max
 * 
 * cdef inline MultipleOfConstraint_validate(MultipleOfConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return not (data % self.mult_of)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MultipleOfConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v_self, long __pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MultipleOfConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":759
 * 
 * cdef inline MultipleOfConstraint_validate(MultipleOfConstraint self, long data):
 *         return not (data % self.mult_of)             # <<<<<<<<<<<<<<
 * 
 * cdef inline MinLengthConstraint_validate(MinLengthConstraint self, str data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->mult_of == 0)) {
    PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
    __PYX_ERR(0, 759, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyBool_FromLong((!(__Pyx_mod_long(__pyx_v_data, __pyx_v_self->mult_of) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":758
 *         return data < self.exc_max
 * 
 * cdef inline MultipleOfConstraint_validate(MultipleOfConstraint self, long data):             # <<<<<<<<<<<<<<
 *         return not (data % self.mult_of)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("apischema.deserialization.methods.MultipleOfConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":761
 *         return not (data % self.mult_of)
 * 
 * cdef inline MinLengthConstraint_validate(MinLengthConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_len
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MinLengthConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":762
 * 
 * cdef inline MinLengthConstraint_validate(MinLengthConstraint self, str data):
 *         return len(data) >= self.min_len             # <<<<<<<<<<<<<<
 * 
 * cdef inline MaxLengthConstraint_validate(MaxLengthConstraint self, str data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 762, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 762, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 >= __pyx_v_self->min_len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":761
 *         return not (data % self.mult_of)
 * 
 * cdef inline MinLengthConstraint_validate(MinLengthConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_len
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinLengthConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":764
 *         return len(data) >= self.min_len
 * 
 * cdef inline MaxLengthConstraint_validate(MaxLengthConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_len
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxLengthConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MaxLengthConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":765
 * 
 * cdef inline MaxLengthConstraint_validate(MaxLengthConstraint self, str data):
 *         return len(data) <= self.max_len             # <<<<<<<<<<<<<<
 * 
 * cdef inline PatternConstraint_validate(PatternConstraint self, str data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 765, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 765, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 <= __pyx_v_self->max_len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":764
 *         return len(data) >= self.min_len
 * 
 * cdef inline MaxLengthConstraint_validate(MaxLengthConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_len
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxLengthConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":767
 *         return len(data) <= self.max_len
 * 
 * cdef inline PatternConstraint_validate(PatternConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return self.pattern.match(data) is not None
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_PatternConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PatternConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":768
 * 
 * cdef inline PatternConstraint_validate(PatternConstraint self, str data):
 *         return self.pattern.match(data) is not None             # <<<<<<<<<<<<<<
 * 
 * cdef inline MinItemsConstraint_validate(MinItemsConstraint self, list data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->pattern, __pyx_n_s_match); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_1 != Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":767
 *         return len(data) <= self.max_len
 * 
 * cdef inline PatternConstraint_validate(PatternConstraint self, str data):             # <<<<<<<<<<<<<<
 *         return self.pattern.match(data) is not None
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.PatternConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":770
 *         return self.pattern.match(data) is not None
 * 
 * cdef inline MinItemsConstraint_validate(MinItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_items
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MinItemsConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":771
 * 
 * cdef inline MinItemsConstraint_validate(MinItemsConstraint self, list data):
 *         return len(data) >= self.min_items             # <<<<<<<<<<<<<<
 * 
 * cdef inline MaxItemsConstraint_validate(MaxItemsConstraint self, list data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 771, __pyx_L1_error)
  }
  __pyx_t_1 = PyList_GET_SIZE(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 771, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 >= __pyx_v_self->min_items)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":770
 *         return self.pattern.match(data) is not None
 * 
 * cdef inline MinItemsConstraint_validate(MinItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_items
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinItemsConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":773
 *         return len(data) >= self.min_items
 * 
 * cdef inline MaxItemsConstraint_validate(MaxItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_items
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxItemsConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MaxItemsConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":774
 * 
 * cdef inline MaxItemsConstraint_validate(MaxItemsConstraint self, list data):
 *         return len(data) <= self.max_items             # <<<<<<<<<<<<<<
 * 
 * cdef inline UniqueItemsConstraint_validate(UniqueItemsConstraint self, list data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 774, __pyx_L1_error)
  }
  __pyx_t_1 = PyList_GET_SIZE(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 <= __pyx_v_self->max_items)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":773
 *         return len(data) >= self.min_items
 * 
 * cdef inline MaxItemsConstraint_validate(MaxItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_items
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxItemsConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":776
 *         return len(data) <= self.max_items
 * 
 * cdef inline UniqueItemsConstraint_validate(UniqueItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(set(map(to_hashable, data))) == len(data)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UniqueItemsConstraint_validate(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("UniqueItemsConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":777
 * 
 * cdef inline UniqueItemsConstraint_validate(UniqueItemsConstraint self, list data):
 *         return len(set(map(to_hashable, data))) == len(data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline MinPropertiesConstraint_validate(MinPropertiesConstraint self, dict data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_to_hashable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_data);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = PySet_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 777, __pyx_L1_error)
  }
  __pyx_t_4 = PyList_GET_SIZE(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 777, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_3 == __pyx_t_4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":776
 *         return len(data) <= self.max_items
 * 
 * cdef inline UniqueItemsConstraint_validate(UniqueItemsConstraint self, list data):             # <<<<<<<<<<<<<<
 *         return len(set(map(to_hashable, data))) == len(data)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.UniqueItemsConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":779
 *         return len(set(map(to_hashable, data))) == len(data)
 * 
 * cdef inline MinPropertiesConstraint_validate(MinPropertiesConstraint self, dict data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_properties
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MinPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MinPropertiesConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":780
 * 
 * cdef inline MinPropertiesConstraint_validate(MinPropertiesConstraint self, dict data):
 *         return len(data) >= self.min_properties             # <<<<<<<<<<<<<<
 * 
 * cdef inline MaxPropertiesConstraint_validate(MaxPropertiesConstraint self, dict data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 780, __pyx_L1_error)
  }
  __pyx_t_1 = PyDict_Size(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 780, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 >= __pyx_v_self->min_properties)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":779
 *         return len(set(map(to_hashable, data))) == len(data)
 * 
 * cdef inline MinPropertiesConstraint_validate(MinPropertiesConstraint self, dict data):             # <<<<<<<<<<<<<<
 *         return len(data) >= self.min_properties
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MinPropertiesConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":782
 *         return len(data) >= self.min_properties
 * 
 * cdef inline MaxPropertiesConstraint_validate(MaxPropertiesConstraint self, dict data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_properties
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MaxPropertiesConstraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MaxPropertiesConstraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":783
 * 
 * cdef inline MaxPropertiesConstraint_validate(MaxPropertiesConstraint self, dict data):
 *         return len(data) <= self.max_properties             # <<<<<<<<<<<<<<
 * 
 * cdef inline RecMethod_deserialize(RecMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 783, __pyx_L1_error)
  }
  __pyx_t_1 = PyDict_Size(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 783, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_1 <= __pyx_v_self->max_properties)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":782
 *         return len(data) >= self.min_properties
 * 
 * cdef inline MaxPropertiesConstraint_validate(MaxPropertiesConstraint self, dict data):             # <<<<<<<<<<<<<<
 *         return len(data) <= self.max_properties
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.MaxPropertiesConstraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":785
 *         return len(data) <= self.max_properties
 * 
 * cdef inline RecMethod_deserialize(RecMethod self, object data):             # <<<<<<<<<<<<<<
 *         if self.method is None:
 *             self.method = self.lazy()
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_RecMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("RecMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":786
 * 
 * cdef inline RecMethod_deserialize(RecMethod self, object data):
 *         if self.method is None:             # <<<<<<<<<<<<<<
 *             self.method = self.lazy()
 *         return DeserializationMethod_deserialize(self.method, data)
 */
  __pyx_t_1 = (__pyx_v_self->method == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":787
 * cdef inline RecMethod_deserialize(RecMethod self, object data):
 *         if self.method is None:
 *             self.method = self.lazy()             # <<<<<<<<<<<<<<
 *         return DeserializationMethod_deserialize(self.method, data)
 * 
 */
    __Pyx_INCREF(__pyx_v_self->lazy);
    __pyx_t_4 = __pyx_v_self->lazy; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->method);
    __Pyx_DECREF(__pyx_v_self->method);
    __pyx_v_self->method = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":786
 * 
 * cdef inline RecMethod_deserialize(RecMethod self, object data):
 *         if self.method is None:             # <<<<<<<<<<<<<<
 *             self.method = self.lazy()
 *         return DeserializationMethod_deserialize(self.method, data)
 */
  }

  /* "apischema/deserialization/methods.pyx":788
 *         if self.method is None:
 *             self.method = self.lazy()
 *         return DeserializationMethod_deserialize(self.method, data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(((__pyx_v_self->method) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self->method, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 788, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_self->method;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_3), __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":785
 *         return len(data) <= self.max_properties
 * 
 * cdef inline RecMethod_deserialize(RecMethod self, object data):             # <<<<<<<<<<<<<<
 *         if self.method is None:
 *             self.method = self.lazy()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.RecMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":790
 *         return DeserializationMethod_deserialize(self.method, data)
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate(
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ValidatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ValidatorMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":791
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 *         return validate(             # <<<<<<<<<<<<<<
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser
 *         )
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "apischema/deserialization/methods.pyx":792
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 *         return validate(
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser             # <<<<<<<<<<<<<<
 *         )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_self->method);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_2), __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":791
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 *         return validate(             # <<<<<<<<<<<<<<
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser
 *         )
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_self->validators);
  __Pyx_GIVEREF(__pyx_v_self->validators);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->validators);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":792
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 *         return validate(
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser             # <<<<<<<<<<<<<<
 *         )
 * 
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_aliaser, __pyx_v_self->aliaser) < 0) __PYX_ERR(0, 792, __pyx_L1_error)

  /* "apischema/deserialization/methods.pyx":791
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):
 *         return validate(             # <<<<<<<<<<<<<<
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser
 *         )
 */
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":790
 *         return DeserializationMethod_deserialize(self.method, data)
 * 
 * cdef inline ValidatorMethod_deserialize(ValidatorMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate(
 *             DeserializationMethod_deserialize(self.method, data), self.validators, aliaser=self.aliaser
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ValidatorMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":795
 *         )
 * 
 * cdef inline CoercerMethod_deserialize(CoercerMethod self, object data):             # <<<<<<<<<<<<<<
 *         return DeserializationMethod_deserialize(self.method, self.coercer(self.cls, data))
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_CoercerMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("CoercerMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":796
 * 
 * cdef inline CoercerMethod_deserialize(CoercerMethod self, object data):
 *         return DeserializationMethod_deserialize(self.method, self.coercer(self.cls, data))             # <<<<<<<<<<<<<<
 * 
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->method);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->coercer);
  __pyx_t_3 = __pyx_v_self->coercer; __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->cls), __pyx_v_data};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->cls), __pyx_v_data};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self->cls));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cls));
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_self->cls));
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_data);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":795
 *         )
 * 
 * cdef inline CoercerMethod_deserialize(CoercerMethod self, object data):             # <<<<<<<<<<<<<<
 *         return DeserializationMethod_deserialize(self.method, self.coercer(self.cls, data))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("apischema.deserialization.methods.CoercerMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":798
 *         return DeserializationMethod_deserialize(self.method, self.coercer(self.cls, data))
 * 
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):             # <<<<<<<<<<<<<<
 *         if isinstance(data, self.expected):
 *             return data
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_TypeCheckMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("TypeCheckMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":799
 * 
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):
 *         if isinstance(data, self.expected):             # <<<<<<<<<<<<<<
 *             return data
 *         return DeserializationMethod_deserialize(self.fallback, data)
 */
  __pyx_t_1 = __pyx_v_self->expected;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "apischema/deserialization/methods.pyx":800
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):
 *         if isinstance(data, self.expected):
 *             return data             # <<<<<<<<<<<<<<
 *         return DeserializationMethod_deserialize(self.fallback, data)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_data);
    __pyx_r = __pyx_v_data;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":799
 * 
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):
 *         if isinstance(data, self.expected):             # <<<<<<<<<<<<<<
 *             return data
 *         return DeserializationMethod_deserialize(self.fallback, data)
 */
  }

  /* "apischema/deserialization/methods.pyx":801
 *         if isinstance(data, self.expected):
 *             return data
 *         return DeserializationMethod_deserialize(self.fallback, data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->fallback);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":798
 *         return DeserializationMethod_deserialize(self.method, self.coercer(self.cls, data))
 * 
 * cdef inline TypeCheckMethod_deserialize(TypeCheckMethod self, object data):             # <<<<<<<<<<<<<<
 *         if isinstance(data, self.expected):
 *             return data
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.TypeCheckMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":803
 *         return DeserializationMethod_deserialize(self.fallback, data)
 * 
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):             # <<<<<<<<<<<<<<
 *         if type(data) in self.constraints:
 *             validate_constraints(data, self.constraints[type(data)], None)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_AnyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("AnyMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":804
 * 
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):
 *         if type(data) in self.constraints:             # <<<<<<<<<<<<<<
 *             validate_constraints(data, self.constraints[type(data)], None)
 *         return data
 */
  if (unlikely(__pyx_v_self->constraints == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 804, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_v_self->constraints, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 804, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":805
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):
 *         if type(data) in self.constraints:
 *             validate_constraints(data, self.constraints[type(data)], None)             # <<<<<<<<<<<<<<
 *         return data
 * 
 */
    if (unlikely(__pyx_v_self->constraints == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 805, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->constraints, ((PyObject *)Py_TYPE(__pyx_v_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 805, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data, ((PyObject*)__pyx_t_3), Py_None, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":804
 * 
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):
 *         if type(data) in self.constraints:             # <<<<<<<<<<<<<<
 *             validate_constraints(data, self.constraints[type(data)], None)
 *         return data
 */
  }

  /* "apischema/deserialization/methods.pyx":806
 *         if type(data) in self.constraints:
 *             validate_constraints(data, self.constraints[type(data)], None)
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":803
 *         return DeserializationMethod_deserialize(self.fallback, data)
 * 
 * cdef inline AnyMethod_deserialize(AnyMethod self, object data):             # <<<<<<<<<<<<<<
 *         if type(data) in self.constraints:
 *             validate_constraints(data, self.constraints[type(data)], None)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.AnyMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":808
 *         return data
 * 
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ListCheckOnlyMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_elt_errors = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_elt = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ListCheckOnlyMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":809
 * 
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  __pyx_t_1 = PyList_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":810
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)             # <<<<<<<<<<<<<<
 *         data2: list = data
 *         elt_errors = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyList_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyList_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 810, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":809
 * 
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  }

  /* "apischema/deserialization/methods.pyx":811
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 *         data2: list = data             # <<<<<<<<<<<<<<
 *         elt_errors = None
 *         for i, elt in enumerate(data2):
 */
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 811, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":812
 *             raise bad_type(data, list)
 *         data2: list = data
 *         elt_errors = None             # <<<<<<<<<<<<<<
 *         for i, elt in enumerate(data2):
 *             try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_elt_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":813
 *         data2: list = data
 *         elt_errors = None
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 */
  __pyx_t_8 = 0;
  __pyx_t_3 = __pyx_v_data2; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
  for (;;) {
    if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 813, __pyx_L1_error)
    #else
    __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_elt, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_v_i = __pyx_t_8;
    __pyx_t_8 = (__pyx_t_8 + 1);

    /* "apischema/deserialization/methods.pyx":814
 *         elt_errors = None
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":815
 *         for i, elt in enumerate(data2):
 *             try:
 *                 DeserializationMethod_deserialize(self.value_method, elt)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 */
        __pyx_t_4 = ((PyObject *)__pyx_v_self->value_method);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_elt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":814
 *         elt_errors = None
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":816
 *             try:
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_5);
      __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 816, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_13);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_5);
      __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0;
      if (__pyx_t_6) {
        __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 816, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_v_err = __pyx_t_4;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":817
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return data2
 */
          __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 817, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_elt_errors, __pyx_t_13, __pyx_v_err, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 817, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF_SET(__pyx_v_elt_errors, __pyx_t_14);
          __pyx_t_14 = 0;
        }

        /* "apischema/deserialization/methods.pyx":816
 *             try:
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L20;
          }
          __pyx_L19_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_6 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "apischema/deserialization/methods.pyx":814
 *         elt_errors = None
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L13_try_end:;
    }

    /* "apischema/deserialization/methods.pyx":813
 *         data2: list = data
 *         elt_errors = None
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 DeserializationMethod_deserialize(self.value_method, elt)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":818
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)             # <<<<<<<<<<<<<<
 *         return data2
 * 
 */
  __pyx_t_3 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_3), __pyx_v_elt_errors, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "apischema/deserialization/methods.pyx":819
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return data2             # <<<<<<<<<<<<<<
 * 
 * cdef inline ListMethod_deserialize(ListMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data2);
  __pyx_r = __pyx_v_data2;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":808
 *         return data
 * 
 * cdef inline ListCheckOnlyMethod_deserialize(ListCheckOnlyMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListCheckOnlyMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_elt_errors);
  __Pyx_XDECREF(__pyx_v_elt);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":821
 *         return data2
 * 
 * cdef inline ListMethod_deserialize(ListMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ListMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_elt_errors = NULL;
  PyObject *__pyx_v_values = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_elt = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ListMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":822
 * 
 * cdef inline ListMethod_deserialize(ListMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  __pyx_t_1 = PyList_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":823
 * cdef inline ListMethod_deserialize(ListMethod self, object data):
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)             # <<<<<<<<<<<<<<
 *         data2: list = data
 *         elt_errors = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 823, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 823, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 823, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyList_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyList_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 823, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 823, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":822
 * 
 * cdef inline ListMethod_deserialize(ListMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  }

  /* "apischema/deserialization/methods.pyx":824
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 *         data2: list = data             # <<<<<<<<<<<<<<
 *         elt_errors = None
 *         values: list = [None] * len(data2)
 */
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 824, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":825
 *             raise bad_type(data, list)
 *         data2: list = data
 *         elt_errors = None             # <<<<<<<<<<<<<<
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_elt_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":826
 *         data2: list = data
 *         elt_errors = None
 *         values: list = [None] * len(data2)             # <<<<<<<<<<<<<<
 *         for i, elt in enumerate(data2):
 *             try:
 */
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 826, __pyx_L1_error)
  }
  __pyx_t_8 = PyList_GET_SIZE(__pyx_v_data2); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 826, __pyx_L1_error)
  __pyx_t_3 = PyList_New(1 * ((__pyx_t_8<0) ? 0:__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_t_8; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyList_SET_ITEM(__pyx_t_3, __pyx_temp, Py_None);
    }
  }
  __pyx_v_values = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":827
 *         elt_errors = None
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 */
  __pyx_t_8 = 0;
  __pyx_t_3 = __pyx_v_data2; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
  for (;;) {
    if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 827, __pyx_L1_error)
    #else
    __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_elt, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_v_i = __pyx_t_8;
    __pyx_t_8 = (__pyx_t_8 + 1);

    /* "apischema/deserialization/methods.pyx":828
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":829
 *         for i, elt in enumerate(data2):
 *             try:
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 */
        __pyx_t_4 = ((PyObject *)__pyx_v_self->value_method);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_elt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 829, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__Pyx_SetItemInt(__pyx_v_values, __pyx_v_i, __pyx_t_7, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1) < 0)) __PYX_ERR(0, 829, __pyx_L6_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":828
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":830
 *             try:
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_5);
      __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 830, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_13);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_5);
      __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0;
      if (__pyx_t_6) {
        __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 830, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_v_err = __pyx_t_4;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":831
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return values
 */
          __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 831, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_elt_errors, __pyx_t_13, __pyx_v_err, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 831, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF_SET(__pyx_v_elt_errors, __pyx_t_14);
          __pyx_t_14 = 0;
        }

        /* "apischema/deserialization/methods.pyx":830
 *             try:
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L20;
          }
          __pyx_L19_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_6 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "apischema/deserialization/methods.pyx":828
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L13_try_end:;
    }

    /* "apischema/deserialization/methods.pyx":827
 *         elt_errors = None
 *         values: list = [None] * len(data2)
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 values[i] = DeserializationMethod_deserialize(self.value_method, elt)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":832
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
  __pyx_t_3 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_3), __pyx_v_elt_errors, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "apischema/deserialization/methods.pyx":833
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return values             # <<<<<<<<<<<<<<
 * 
 * cdef inline SetMethod_deserialize(SetMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_values);
  __pyx_r = __pyx_v_values;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":821
 *         return data2
 * 
 * cdef inline ListMethod_deserialize(ListMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.ListMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_elt_errors);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_elt);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":835
 *         return values
 * 
 * cdef inline SetMethod_deserialize(SetMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SetMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_elt_errors = 0;
  PyObject *__pyx_v_values = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_elt = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  char const *__pyx_t_17;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("SetMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":836
 * 
 * cdef inline SetMethod_deserialize(SetMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  __pyx_t_1 = PyList_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":837
 * cdef inline SetMethod_deserialize(SetMethod self, object data):
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)             # <<<<<<<<<<<<<<
 *         data2: list = data
 *         elt_errors: dict = {}
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 837, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 837, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 837, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyList_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyList_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 837, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 837, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":836
 * 
 * cdef inline SetMethod_deserialize(SetMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  }

  /* "apischema/deserialization/methods.pyx":838
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 *         data2: list = data             # <<<<<<<<<<<<<<
 *         elt_errors: dict = {}
 *         values: set = set()
 */
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 838, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":839
 *             raise bad_type(data, list)
 *         data2: list = data
 *         elt_errors: dict = {}             # <<<<<<<<<<<<<<
 *         values: set = set()
 *         for i, elt in enumerate(data2):
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_elt_errors = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":840
 *         data2: list = data
 *         elt_errors: dict = {}
 *         values: set = set()             # <<<<<<<<<<<<<<
 *         for i, elt in enumerate(data2):
 *             try:
 */
  __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_values = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":841
 *         elt_errors: dict = {}
 *         values: set = set()
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 */
  __pyx_t_8 = 0;
  __pyx_t_3 = __pyx_v_data2; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
  for (;;) {
    if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 841, __pyx_L1_error)
    #else
    __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_elt, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_v_i = __pyx_t_8;
    __pyx_t_8 = (__pyx_t_8 + 1);

    /* "apischema/deserialization/methods.pyx":842
 *         values: set = set()
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":843
 *         for i, elt in enumerate(data2):
 *             try:
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 */
        __pyx_t_4 = ((PyObject *)__pyx_v_self->value_method);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_elt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 843, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_13 = PySet_Add(__pyx_v_values, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 843, __pyx_L6_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":842
 *         values: set = set()
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:
 */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":844
 *             try:
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_5);
      __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 844, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_14);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_5);
      __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0;
      if (__pyx_t_6) {
        __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 844, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_v_err = __pyx_t_4;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":845
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return values
 */
          __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 845, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_15 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_elt_errors, __pyx_t_14, __pyx_v_err, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 845, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (!(likely(PyDict_CheckExact(__pyx_t_15))||((__pyx_t_15) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_15)->tp_name), 0))) __PYX_ERR(0, 845, __pyx_L19_error)
          __Pyx_DECREF_SET(__pyx_v_elt_errors, ((PyObject*)__pyx_t_15));
          __pyx_t_15 = 0;
        }

        /* "apischema/deserialization/methods.pyx":844
 *             try:
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L20;
          }
          __pyx_L19_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __pyx_t_6 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            }
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "apischema/deserialization/methods.pyx":842
 *         values: set = set()
 *         for i, elt in enumerate(data2):
 *             try:             # <<<<<<<<<<<<<<
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L13_try_end:;
    }

    /* "apischema/deserialization/methods.pyx":841
 *         elt_errors: dict = {}
 *         values: set = set()
 *         for i, elt in enumerate(data2):             # <<<<<<<<<<<<<<
 *             try:
 *                 values.add(DeserializationMethod_deserialize(self.value_method, elt))
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":846
 *             except ValidationError as err:
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
  __pyx_t_3 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_3), __pyx_v_elt_errors, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "apischema/deserialization/methods.pyx":847
 *                 elt_errors = set_child_error(elt_errors, i, err)
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return values             # <<<<<<<<<<<<<<
 * 
 * cdef inline VariadicTupleMethod_deserialize(VariadicTupleMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_values);
  __pyx_r = __pyx_v_values;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":835
 *         return values
 * 
 * cdef inline SetMethod_deserialize(SetMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("apischema.deserialization.methods.SetMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_elt_errors);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_elt);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":849
 *         return values
 * 
 * cdef inline VariadicTupleMethod_deserialize(VariadicTupleMethod self, object data):             # <<<<<<<<<<<<<<
 *         return tuple(DeserializationMethod_deserialize(self.method, data))
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_VariadicTupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("VariadicTupleMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":850
 * 
 * cdef inline VariadicTupleMethod_deserialize(VariadicTupleMethod self, object data):
 *         return tuple(DeserializationMethod_deserialize(self.method, data))             # <<<<<<<<<<<<<<
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->method);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":849
 *         return values
 * 
 * cdef inline VariadicTupleMethod_deserialize(VariadicTupleMethod self, object data):             # <<<<<<<<<<<<<<
 *         return tuple(DeserializationMethod_deserialize(self.method, data))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.VariadicTupleMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":852
 *         return tuple(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):             # <<<<<<<<<<<<<<
 *         try:
 *             return self.value_map[data]
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_LiteralMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_cls = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("LiteralMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":853
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             return self.value_map[data]
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":854
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):
 *         try:
 *             return self.value_map[data]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             if self.coercer is not None:
 */
      __Pyx_XDECREF(__pyx_r);
      if (unlikely(__pyx_v_self->value_map == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 854, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->value_map, __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 854, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "apischema/deserialization/methods.pyx":853
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             return self.value_map[data]
 *         except KeyError:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":855
 *         try:
 *             return self.value_map[data]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             if self.coercer is not None:
 *                 for cls in self.types:
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 855, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "apischema/deserialization/methods.pyx":856
 *             return self.value_map[data]
 *         except KeyError:
 *             if self.coercer is not None:             # <<<<<<<<<<<<<<
 *                 for cls in self.types:
 *                     try:
 */
      __pyx_t_8 = (__pyx_v_self->coercer != Py_None);
      __pyx_t_9 = (__pyx_t_8 != 0);
      if (__pyx_t_9) {

        /* "apischema/deserialization/methods.pyx":857
 *         except KeyError:
 *             if self.coercer is not None:
 *                 for cls in self.types:             # <<<<<<<<<<<<<<
 *                     try:
 *                         return self.value_map[self.coercer(cls, data)]
 */
        if (unlikely(__pyx_v_self->types == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
          __PYX_ERR(0, 857, __pyx_L5_except_error)
        }
        __pyx_t_10 = __pyx_v_self->types; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0;
        for (;;) {
          if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_12); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 857, __pyx_L5_except_error)
          #else
          __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 857, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          #endif
          __Pyx_XDECREF_SET(__pyx_v_cls, __pyx_t_12);
          __pyx_t_12 = 0;

          /* "apischema/deserialization/methods.pyx":858
 *             if self.coercer is not None:
 *                 for cls in self.types:
 *                     try:             # <<<<<<<<<<<<<<
 *                         return self.value_map[self.coercer(cls, data)]
 *                     except IndexError:
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_13);
            __Pyx_XGOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_t_15);
            /*try:*/ {

              /* "apischema/deserialization/methods.pyx":859
 *                 for cls in self.types:
 *                     try:
 *                         return self.value_map[self.coercer(cls, data)]             # <<<<<<<<<<<<<<
 *                     except IndexError:
 *                         pass
 */
              __Pyx_XDECREF(__pyx_r);
              if (unlikely(__pyx_v_self->value_map == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(0, 859, __pyx_L14_error)
              }
              __Pyx_INCREF(__pyx_v_self->coercer);
              __pyx_t_16 = __pyx_v_self->coercer; __pyx_t_17 = NULL;
              __pyx_t_5 = 0;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) {
                __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_16);
                if (likely(__pyx_t_17)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
                  __Pyx_INCREF(__pyx_t_17);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_16, function);
                  __pyx_t_5 = 1;
                }
              }
              #if CYTHON_FAST_PYCALL
              if (PyFunction_Check(__pyx_t_16)) {
                PyObject *__pyx_temp[3] = {__pyx_t_17, __pyx_v_cls, __pyx_v_data};
                __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 859, __pyx_L14_error)
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_GOTREF(__pyx_t_12);
              } else
              #endif
              #if CYTHON_FAST_PYCCALL
              if (__Pyx_PyFastCFunction_Check(__pyx_t_16)) {
                PyObject *__pyx_temp[3] = {__pyx_t_17, __pyx_v_cls, __pyx_v_data};
                __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 859, __pyx_L14_error)
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_GOTREF(__pyx_t_12);
              } else
              #endif
              {
                __pyx_t_18 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 859, __pyx_L14_error)
                __Pyx_GOTREF(__pyx_t_18);
                if (__pyx_t_17) {
                  __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
                }
                __Pyx_INCREF(__pyx_v_cls);
                __Pyx_GIVEREF(__pyx_v_cls);
                PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_5, __pyx_v_cls);
                __Pyx_INCREF(__pyx_v_data);
                __Pyx_GIVEREF(__pyx_v_data);
                PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_5, __pyx_v_data);
                __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_18, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 859, __pyx_L14_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              }
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __pyx_t_16 = __Pyx_PyDict_GetItem(__pyx_v_self->value_map, __pyx_t_12); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 859, __pyx_L14_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              __pyx_r = __pyx_t_16;
              __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              goto __pyx_L18_try_return;

              /* "apischema/deserialization/methods.pyx":858
 *             if self.coercer is not None:
 *                 for cls in self.types:
 *                     try:             # <<<<<<<<<<<<<<
 *                         return self.value_map[self.coercer(cls, data)]
 *                     except IndexError:
 */
            }
            __pyx_L14_error:;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;

            /* "apischema/deserialization/methods.pyx":860
 *                     try:
 *                         return self.value_map[self.coercer(cls, data)]
 *                     except IndexError:             # <<<<<<<<<<<<<<
 *                         pass
 *             raise ValidationError(format_error(self.error, data))
 */
            __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError);
            if (__pyx_t_5) {
              __Pyx_ErrRestore(0,0,0);
              goto __pyx_L15_exception_handled;
            }
            goto __pyx_L16_except_error;
            __pyx_L16_except_error:;

            /* "apischema/deserialization/methods.pyx":858
 *             if self.coercer is not None:
 *                 for cls in self.types:
 *                     try:             # <<<<<<<<<<<<<<
 *                         return self.value_map[self.coercer(cls, data)]
 *                     except IndexError:
 */
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
            goto __pyx_L5_except_error;
            __pyx_L18_try_return:;
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
            goto __pyx_L6_except_return;
            __pyx_L15_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
          }

          /* "apischema/deserialization/methods.pyx":857
 *         except KeyError:
 *             if self.coercer is not None:
 *                 for cls in self.types:             # <<<<<<<<<<<<<<
 *                     try:
 *                         return self.value_map[self.coercer(cls, data)]
 */
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "apischema/deserialization/methods.pyx":856
 *             return self.value_map[data]
 *         except KeyError:
 *             if self.coercer is not None:             # <<<<<<<<<<<<<<
 *                 for cls in self.types:
 *                     try:
 */
      }

      /* "apischema/deserialization/methods.pyx":862
 *                     except IndexError:
 *                         pass
 *             raise ValidationError(format_error(self.error, data))             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             raise bad_type(data, *self.types)
 */
      __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 862, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_12 = __pyx_v_self->error;
      __Pyx_INCREF(__pyx_t_12);
      __pyx_t_18 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_12, __pyx_v_data, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 862, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_16))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_16);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_16, function);
        }
      }
      __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_16, __pyx_t_12, __pyx_t_18) : __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_18);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 862, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 862, __pyx_L5_except_error)
    }

    /* "apischema/deserialization/methods.pyx":863
 *                         pass
 *             raise ValidationError(format_error(self.error, data))
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             raise bad_type(data, *self.types)
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 863, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_4);

      /* "apischema/deserialization/methods.pyx":864
 *             raise ValidationError(format_error(self.error, data))
 *         except TypeError:
 *             raise bad_type(data, *self.types)             # <<<<<<<<<<<<<<
 * 
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):
 */
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 864, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 864, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_v_data);
      if (unlikely(__pyx_v_self->types == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 864, __pyx_L5_except_error)
      }
      __pyx_t_18 = PyNumber_Add(__pyx_t_16, __pyx_v_self->types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 864, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_18, NULL); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 864, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_Raise(__pyx_t_16, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __PYX_ERR(0, 864, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "apischema/deserialization/methods.pyx":853
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             return self.value_map[data]
 *         except KeyError:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":852
 *         return tuple(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline LiteralMethod_deserialize(LiteralMethod self, object data):             # <<<<<<<<<<<<<<
 *         try:
 *             return self.value_map[data]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("apischema.deserialization.methods.LiteralMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":866
 *             raise bad_type(data, *self.types)
 * 
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MappingCheckOnly_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_item_errors = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MappingCheckOnly_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":867
 * 
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":868
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)             # <<<<<<<<<<<<<<
 *         data2: dict = data
 *         item_errors = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 868, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyDict_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyDict_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyDict_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 868, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":867
 * 
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  }

  /* "apischema/deserialization/methods.pyx":869
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 *         data2: dict = data             # <<<<<<<<<<<<<<
 *         item_errors = None
 *         for key, value in data2.items():
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 869, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":870
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         item_errors = None             # <<<<<<<<<<<<<<
 *         for key, value in data2.items():
 *             try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_item_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":871
 *         data2: dict = data
 *         item_errors = None
 *         for key, value in data2.items():             # <<<<<<<<<<<<<<
 *             try:
 *                 DeserializationMethod_deserialize(self.key_method, key)
 */
  __pyx_t_8 = 0;
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 871, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_data2, 1, __pyx_n_s_items, (&__pyx_t_9), (&__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3);
  __pyx_t_3 = __pyx_t_4;
  __pyx_t_4 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_9, &__pyx_t_8, &__pyx_t_4, &__pyx_t_7, NULL, __pyx_t_6);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 871, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "apischema/deserialization/methods.pyx":872
 *         item_errors = None
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":873
 *         for key, value in data2.items():
 *             try:
 *                 DeserializationMethod_deserialize(self.key_method, key)             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.value_method, value)
 *             except ValidationError as err:
 */
        __pyx_t_7 = ((PyObject *)__pyx_v_self->key_method);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_7), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":874
 *             try:
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 item_errors = set_child_error(item_errors, key, err)
 */
        __pyx_t_4 = ((PyObject *)__pyx_v_self->value_method);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 874, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":872
 *         item_errors = None
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)
 */
      }
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":875
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_5);
      __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 875, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_14);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_5);
      __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0;
      if (__pyx_t_10) {
        __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 875, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_v_err = __pyx_t_4;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":876
 *                 DeserializationMethod_deserialize(self.value_method, value)
 *             except ValidationError as err:
 *                 item_errors = set_child_error(item_errors, key, err)             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, item_errors)
 *         return data2
 */
          __pyx_t_14 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_item_errors, __pyx_v_key, __pyx_v_err, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 876, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF_SET(__pyx_v_item_errors, __pyx_t_14);
          __pyx_t_14 = 0;
        }

        /* "apischema/deserialization/methods.pyx":875
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L20;
          }
          __pyx_L19_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_10 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "apischema/deserialization/methods.pyx":872
 *         item_errors = None
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 DeserializationMethod_deserialize(self.key_method, key)
 *                 DeserializationMethod_deserialize(self.value_method, value)
 */
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      __pyx_L13_try_end:;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":877
 *             except ValidationError as err:
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)             # <<<<<<<<<<<<<<
 *         return data2
 * 
 */
  __pyx_t_3 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_3), __pyx_v_item_errors, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "apischema/deserialization/methods.pyx":878
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 *         return data2             # <<<<<<<<<<<<<<
 * 
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data2);
  __pyx_r = __pyx_v_data2;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":866
 *             raise bad_type(data, *self.types)
 * 
 * cdef inline MappingCheckOnly_deserialize(MappingCheckOnly self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingCheckOnly_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_item_errors);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":880
 *         return data2
 * 
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_MappingMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_item_errors = NULL;
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("MappingMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":881
 * 
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":882
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)             # <<<<<<<<<<<<<<
 *         data2: dict = data
 *         item_errors = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyDict_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyDict_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyDict_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 882, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":881
 * 
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  }

  /* "apischema/deserialization/methods.pyx":883
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 *         data2: dict = data             # <<<<<<<<<<<<<<
 *         item_errors = None
 *         items: dict = {}
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 883, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":884
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         item_errors = None             # <<<<<<<<<<<<<<
 *         items: dict = {}
 *         for key, value in data2.items():
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_item_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":885
 *         data2: dict = data
 *         item_errors = None
 *         items: dict = {}             # <<<<<<<<<<<<<<
 *         for key, value in data2.items():
 *             try:
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_items = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":886
 *         item_errors = None
 *         items: dict = {}
 *         for key, value in data2.items():             # <<<<<<<<<<<<<<
 *             try:
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,
 */
  __pyx_t_8 = 0;
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 886, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_data2, 1, __pyx_n_s_items, (&__pyx_t_9), (&__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3);
  __pyx_t_3 = __pyx_t_4;
  __pyx_t_4 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_9, &__pyx_t_8, &__pyx_t_4, &__pyx_t_7, NULL, __pyx_t_6);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "apischema/deserialization/methods.pyx":887
 *         items: dict = {}
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,
 *                     value
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":888
 *         for key, value in data2.items():
 *             try:
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,             # <<<<<<<<<<<<<<
 *                     value
 *                 )
 */
        __pyx_t_7 = ((PyObject *)__pyx_v_self->value_method);
        __Pyx_INCREF(__pyx_t_7);

        /* "apischema/deserialization/methods.pyx":889
 *             try:
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,
 *                     value             # <<<<<<<<<<<<<<
 *                 )
 *             except ValidationError as err:
 */
        __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_7), __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":888
 *         for key, value in data2.items():
 *             try:
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,             # <<<<<<<<<<<<<<
 *                     value
 *                 )
 */
        __pyx_t_7 = ((PyObject *)__pyx_v_self->key_method);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_5 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_7), __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 888, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(PyDict_SetItem(__pyx_v_items, __pyx_t_5, __pyx_t_4) < 0)) __PYX_ERR(0, 888, __pyx_L6_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":887
 *         items: dict = {}
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,
 *                     value
 */
      }
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L13_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":891
 *                     value
 *                 )
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7);
      __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 891, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_14);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_7);
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_7 = 0;
      if (__pyx_t_10) {
        __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 891, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __pyx_v_err = __pyx_t_5;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":892
 *                 )
 *             except ValidationError as err:
 *                 item_errors = set_child_error(item_errors, key, err)             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, item_errors)
 *         return items
 */
          __pyx_t_14 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_item_errors, __pyx_v_key, __pyx_v_err, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 892, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF_SET(__pyx_v_item_errors, __pyx_t_14);
          __pyx_t_14 = 0;
        }

        /* "apischema/deserialization/methods.pyx":891
 *                     value
 *                 )
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L20;
          }
          __pyx_L19_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_10 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L8_except_error;
          }
          __pyx_L20:;
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "apischema/deserialization/methods.pyx":887
 *         items: dict = {}
 *         for key, value in data2.items():
 *             try:             # <<<<<<<<<<<<<<
 *                 items[DeserializationMethod_deserialize(self.key_method, key)] = DeserializationMethod_deserialize(self.value_method,
 *                     value
 */
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      goto __pyx_L1_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      __pyx_L13_try_end:;
    }
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":893
 *             except ValidationError as err:
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
  __pyx_t_3 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_3), __pyx_v_item_errors, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "apischema/deserialization/methods.pyx":894
 *                 item_errors = set_child_error(item_errors, key, err)
 *         validate_constraints(data2, self.constraints, item_errors)
 *         return items             # <<<<<<<<<<<<<<
 * 
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_items);
  __pyx_r = __pyx_v_items;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":880
 *         return data2
 * 
 * cdef inline MappingMethod_deserialize(MappingMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.MappingMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_item_errors);
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":896
 *         return items
 * 
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SimpleObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_fields_count = NULL;
  PyObject *__pyx_v_field_errors = NULL;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_field = 0;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *(*__pyx_t_23)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("SimpleObjectMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":897
 * 
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":898
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)             # <<<<<<<<<<<<<<
 *         data2: dict = data
 *         fields_count = 0
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 898, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyDict_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyDict_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyDict_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 898, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":897
 * 
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  }

  /* "apischema/deserialization/methods.pyx":899
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 *         data2: dict = data             # <<<<<<<<<<<<<<
 *         fields_count = 0
 *         field_errors = None
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 899, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":900
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         fields_count = 0             # <<<<<<<<<<<<<<
 *         field_errors = None
 *         for i in range(len(self.fields)):
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_fields_count = __pyx_int_0;

  /* "apischema/deserialization/methods.pyx":901
 *         data2: dict = data
 *         fields_count = 0
 *         field_errors = None             # <<<<<<<<<<<<<<
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_field_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":902
 *         fields_count = 0
 *         field_errors = None
 *         for i in range(len(self.fields)):             # <<<<<<<<<<<<<<
 *             field: Field = self.fields[i]
 *             if field.alias in data2:
 */
  __pyx_t_3 = __pyx_v_self->fields;
  __Pyx_INCREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 902, __pyx_L1_error)
  }
  __pyx_t_8 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 902, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_9 = __pyx_t_8;
  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
    __pyx_v_i = __pyx_t_10;

    /* "apischema/deserialization/methods.pyx":903
 *         field_errors = None
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]             # <<<<<<<<<<<<<<
 *             if field.alias in data2:
 *                 fields_count += 1
 */
    if (unlikely(__pyx_v_self->fields == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 903, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_9apischema_15deserialization_7methods_Field))))) __PYX_ERR(0, 903, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":904
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 *             if field.alias in data2:             # <<<<<<<<<<<<<<
 *                 fields_count += 1
 *                 try:
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(0, 904, __pyx_L1_error)
    }
    __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_field->alias, __pyx_v_data2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 904, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "apischema/deserialization/methods.pyx":905
 *             field: Field = self.fields[i]
 *             if field.alias in data2:
 *                 fields_count += 1             # <<<<<<<<<<<<<<
 *                 try:
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 */
      __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_fields_count, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 905, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_fields_count, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":906
 *             if field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":907
 *                 fields_count += 1
 *                 try:
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])             # <<<<<<<<<<<<<<
 *                 except ValidationError as err:
 *                     if field.required or not field.fall_back_on_default:
 */
          __pyx_t_3 = ((PyObject *)__pyx_v_field->method);
          __Pyx_INCREF(__pyx_t_3);
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 907, __pyx_L7_error)
          }
          __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_field->alias); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 907, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "apischema/deserialization/methods.pyx":906
 *             if field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
        }
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L14_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":908
 *                 try:
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if field.required or not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 */
        __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_3);
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 908, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_5);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_3);
        __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
        if (__pyx_t_6) {
          __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 908, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_v_err = __pyx_t_4;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":909
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 *                     if field.required or not field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required:
 */
            __pyx_t_2 = (__pyx_v_field->required != 0);
            if (!__pyx_t_2) {
            } else {
              __pyx_t_1 = __pyx_t_2;
              goto __pyx_L23_bool_binop_done;
            }
            __pyx_t_2 = ((!(__pyx_v_field->fall_back_on_default != 0)) != 0);
            __pyx_t_1 = __pyx_t_2;
            __pyx_L23_bool_binop_done:;
            if (__pyx_t_1) {

              /* "apischema/deserialization/methods.pyx":910
 *                 except ValidationError as err:
 *                     if field.required or not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)             # <<<<<<<<<<<<<<
 *             elif field.required:
 *                 field_errors = set_child_error(
 */
              __pyx_t_5 = __pyx_v_field->alias;
              __Pyx_INCREF(__pyx_t_5);
              __pyx_t_14 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_5, __pyx_v_err, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 910, __pyx_L20_error)
              __Pyx_GOTREF(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_14);
              __pyx_t_14 = 0;

              /* "apischema/deserialization/methods.pyx":909
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 *                     if field.required or not field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required:
 */
            }
          }

          /* "apischema/deserialization/methods.pyx":908
 *                 try:
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if field.required or not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L21;
            }
            __pyx_L20_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_21);
              __Pyx_XGOTREF(__pyx_t_22);
              __pyx_t_6 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              }
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
              __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
              goto __pyx_L9_except_error;
            }
            __pyx_L21:;
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L8_exception_handled;
        }
        goto __pyx_L9_except_error;
        __pyx_L9_except_error:;

        /* "apischema/deserialization/methods.pyx":906
 *             if field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        __pyx_L14_try_end:;
      }

      /* "apischema/deserialization/methods.pyx":904
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 *             if field.alias in data2:             # <<<<<<<<<<<<<<
 *                 fields_count += 1
 *                 try:
 */
      goto __pyx_L6;
    }

    /* "apischema/deserialization/methods.pyx":911
 *                     if field.required or not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required:             # <<<<<<<<<<<<<<
 *                 field_errors = set_child_error(
 *                     field_errors, field.alias, ValidationError(self.missing)
 */
    __pyx_t_1 = (__pyx_v_field->required != 0);
    if (__pyx_t_1) {

      /* "apischema/deserialization/methods.pyx":913
 *             elif field.required:
 *                 field_errors = set_child_error(
 *                     field_errors, field.alias, ValidationError(self.missing)             # <<<<<<<<<<<<<<
 *                 )
 *         if len(data2) != fields_count and not self.typed_dict:
 */
      __pyx_t_7 = __pyx_v_field->alias;
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_14 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      __pyx_t_4 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_14, __pyx_v_self->missing) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->missing);
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":912
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required:
 *                 field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                     field_errors, field.alias, ValidationError(self.missing)
 *                 )
 */
      __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_7, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 912, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":911
 *                     if field.required or not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required:             # <<<<<<<<<<<<<<
 *                 field_errors = set_child_error(
 *                     field_errors, field.alias, ValidationError(self.missing)
 */
    }
    __pyx_L6:;
  }

  /* "apischema/deserialization/methods.pyx":915
 *                     field_errors, field.alias, ValidationError(self.missing)
 *                 )
 *         if len(data2) != fields_count and not self.typed_dict:             # <<<<<<<<<<<<<<
 *             for key in data2.keys() - self.all_aliases:
 *                 field_errors = set_child_error(
 */
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 915, __pyx_L1_error)
  }
  __pyx_t_8 = PyDict_Size(__pyx_v_data2); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 915, __pyx_L1_error)
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_fields_count, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 915, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L30_bool_binop_done;
  }
  __pyx_t_2 = ((!(__pyx_v_self->typed_dict != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L30_bool_binop_done:;
  if (__pyx_t_1) {

    /* "apischema/deserialization/methods.pyx":916
 *                 )
 *         if len(data2) != fields_count and not self.typed_dict:
 *             for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                 field_errors = set_child_error(
 *                     field_errors, key, ValidationError(self.unexpected)
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
      __PYX_ERR(0, 916, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyDict_Keys(__pyx_v_data2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_v_self->all_aliases); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
      __pyx_t_23 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 916, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 916, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_23)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 916, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 916, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_23(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 916, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":918
 *             for key in data2.keys() - self.all_aliases:
 *                 field_errors = set_child_error(
 *                     field_errors, key, ValidationError(self.unexpected)             # <<<<<<<<<<<<<<
 *                 )
 *         if field_errors:
 */
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 918, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_14 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_3 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_v_self->unexpected) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_self->unexpected);
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":917
 *         if len(data2) != fields_count and not self.typed_dict:
 *             for key in data2.keys() - self.all_aliases:
 *                 field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                     field_errors, key, ValidationError(self.unexpected)
 *                 )
 */
      __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_v_key, __pyx_t_3, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":916
 *                 )
 *         if len(data2) != fields_count and not self.typed_dict:
 *             for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                 field_errors = set_child_error(
 *                     field_errors, key, ValidationError(self.unexpected)
 */
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":915
 *                     field_errors, field.alias, ValidationError(self.missing)
 *                 )
 *         if len(data2) != fields_count and not self.typed_dict:             # <<<<<<<<<<<<<<
 *             for key in data2.keys() - self.all_aliases:
 *                 field_errors = set_child_error(
 */
  }

  /* "apischema/deserialization/methods.pyx":920
 *                     field_errors, key, ValidationError(self.unexpected)
 *                 )
 *         if field_errors:             # <<<<<<<<<<<<<<
 *             raise ValidationError([], field_errors)
 *         return Constructor_construct(self.constructor, data2)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 920, __pyx_L1_error)
  if (unlikely(__pyx_t_1)) {

    /* "apischema/deserialization/methods.pyx":921
 *                 )
 *         if field_errors:
 *             raise ValidationError([], field_errors)             # <<<<<<<<<<<<<<
 *         return Constructor_construct(self.constructor, data2)
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = NULL;
    __pyx_t_15 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_15 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_3, __pyx_v_field_errors};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 921, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_3, __pyx_v_field_errors};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 921, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 921, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_14) {
        __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_14); __pyx_t_14 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_15, __pyx_t_3);
      __Pyx_INCREF(__pyx_v_field_errors);
      __Pyx_GIVEREF(__pyx_v_field_errors);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_15, __pyx_v_field_errors);
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 921, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 921, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":920
 *                     field_errors, key, ValidationError(self.unexpected)
 *                 )
 *         if field_errors:             # <<<<<<<<<<<<<<
 *             raise ValidationError([], field_errors)
 *         return Constructor_construct(self.constructor, data2)
 */
  }

  /* "apischema/deserialization/methods.pyx":922
 *         if field_errors:
 *             raise ValidationError([], field_errors)
 *         return Constructor_construct(self.constructor, data2)             # <<<<<<<<<<<<<<
 * 
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = ((PyObject *)__pyx_v_self->constructor);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_Constructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_4), __pyx_v_data2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":896
 *         return items
 * 
 * cdef inline SimpleObjectMethod_deserialize(SimpleObjectMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.SimpleObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_fields_count);
  __Pyx_XDECREF(__pyx_v_field_errors);
  __Pyx_XDECREF((PyObject *)__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":924
 *         return Constructor_construct(self.constructor, data2)
 * 
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ObjectMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_values = 0;
  PyObject *__pyx_v_fields_count = NULL;
  PyObject *__pyx_v_errors = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_v_field_errors = NULL;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v_field = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_requiring = 0;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_v_remain = NULL;
  struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v_flattened_field = 0;
  PyObject *__pyx_v_flattened = 0;
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v_pattern_field = 0;
  PyObject *__pyx_v_matched = 0;
  PyObject *__pyx_v_additional = 0;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_init = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_default_factory = NULL;
  PyObject *__pyx_v_aliases = NULL;
  PyObject *__pyx_v_validators = NULL;
  PyObject *__pyx_v_error = NULL;
  PyObject *__pyx_v_invalid_fields = NULL;
  PyObject *__pyx_v_valid_validators = NULL;
  PyObject *__pyx_v_obj = NULL;
  PyObject *__pyx_8genexpr1__pyx_v_alias = NULL;
  PyObject *__pyx_8genexpr2__pyx_v_key = NULL;
  PyObject *__pyx_8genexpr3__pyx_v_key = NULL;
  PyObject *__pyx_8genexpr4__pyx_v_v = NULL;
  PyObject *__pyx_8genexpr5__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  char const *__pyx_t_23;
  PyObject *__pyx_t_24 = NULL;
  PyObject *__pyx_t_25 = NULL;
  PyObject *__pyx_t_26 = NULL;
  PyObject *__pyx_t_27 = NULL;
  PyObject *__pyx_t_28 = NULL;
  char const *__pyx_t_29;
  int __pyx_t_30;
  int __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_UCS4 __pyx_t_33;
  char const *__pyx_t_34;
  PyObject *(*__pyx_t_35)(PyObject *);
  char const *__pyx_t_36;
  char const *__pyx_t_37;
  PyObject *(*__pyx_t_38)(PyObject *);
  char const *__pyx_t_39;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ObjectMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":925
 * 
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":926
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)             # <<<<<<<<<<<<<<
 *         data2: dict = data
 *         values: dict = {}
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyDict_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyDict_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyDict_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 926, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":925
 * 
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  }

  /* "apischema/deserialization/methods.pyx":927
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 *         data2: dict = data             # <<<<<<<<<<<<<<
 *         values: dict = {}
 *         fields_count = 0
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 927, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":928
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         values: dict = {}             # <<<<<<<<<<<<<<
 *         fields_count = 0
 *         errors = None
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_values = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":929
 *         data2: dict = data
 *         values: dict = {}
 *         fields_count = 0             # <<<<<<<<<<<<<<
 *         errors = None
 *         try:
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_fields_count = __pyx_int_0;

  /* "apischema/deserialization/methods.pyx":930
 *         values: dict = {}
 *         fields_count = 0
 *         errors = None             # <<<<<<<<<<<<<<
 *         try:
 *             validate_constraints(data, self.constraints, None)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":931
 *         fields_count = 0
 *         errors = None
 *         try:             # <<<<<<<<<<<<<<
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_10);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":932
 *         errors = None
 *         try:
 *             validate_constraints(data, self.constraints, None)             # <<<<<<<<<<<<<<
 *         except ValidationError as err:
 *             errors = list(err.messages)
 */
      __pyx_t_3 = __pyx_v_self->constraints;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data, ((PyObject*)__pyx_t_3), Py_None, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 932, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":931
 *         fields_count = 0
 *         errors = None
 *         try:             # <<<<<<<<<<<<<<
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:
 */
    }
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "apischema/deserialization/methods.pyx":933
 *         try:
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             errors = list(err.messages)
 *         field_errors = None
 */
    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 933, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_5);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_7);
    __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_7 = 0;
    if (__pyx_t_6) {
      __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 933, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_err = __pyx_t_3;
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":934
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:
 *             errors = list(err.messages)             # <<<<<<<<<<<<<<
 *         field_errors = None
 *         for i in range(len(self.fields)):
 */
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_messages); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L15_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_11 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 934, __pyx_L15_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_errors, __pyx_t_11);
        __pyx_t_11 = 0;
      }

      /* "apischema/deserialization/methods.pyx":933
 *         try:
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             errors = list(err.messages)
 *         field_errors = None
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_err);
          __pyx_v_err = NULL;
          goto __pyx_L16;
        }
        __pyx_L15_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          }
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
          goto __pyx_L6_except_error;
        }
        __pyx_L16:;
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "apischema/deserialization/methods.pyx":931
 *         fields_count = 0
 *         errors = None
 *         try:             # <<<<<<<<<<<<<<
 *             validate_constraints(data, self.constraints, None)
 *         except ValidationError as err:
 */
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    __pyx_L9_try_end:;
  }

  /* "apischema/deserialization/methods.pyx":935
 *         except ValidationError as err:
 *             errors = list(err.messages)
 *         field_errors = None             # <<<<<<<<<<<<<<
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_field_errors = Py_None;

  /* "apischema/deserialization/methods.pyx":936
 *             errors = list(err.messages)
 *         field_errors = None
 *         for i in range(len(self.fields)):             # <<<<<<<<<<<<<<
 *             field: Field = self.fields[i]
 *             if field.required:
 */
  __pyx_t_4 = __pyx_v_self->fields;
  __Pyx_INCREF(__pyx_t_4);
  if (unlikely(__pyx_t_4 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 936, __pyx_L1_error)
  }
  __pyx_t_20 = PyTuple_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(0, 936, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_21 = __pyx_t_20;
  for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
    __pyx_v_i = __pyx_t_22;

    /* "apischema/deserialization/methods.pyx":937
 *         field_errors = None
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]             # <<<<<<<<<<<<<<
 *             if field.required:
 *                 try:
 */
    if (unlikely(__pyx_v_self->fields == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 937, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 937, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_9apischema_15deserialization_7methods_Field))))) __PYX_ERR(0, 937, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":938
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 *             if field.required:             # <<<<<<<<<<<<<<
 *                 try:
 *                     value: object = data2[field.alias]
 */
    __pyx_t_2 = (__pyx_v_field->required != 0);
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":939
 *             field: Field = self.fields[i]
 *             if field.required:
 *                 try:             # <<<<<<<<<<<<<<
 *                     value: object = data2[field.alias]
 *                 except KeyError:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":940
 *             if field.required:
 *                 try:
 *                     value: object = data2[field.alias]             # <<<<<<<<<<<<<<
 *                 except KeyError:
 *                     field_errors = set_child_error(
 */
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 940, __pyx_L24_error)
          }
          __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_field->alias); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 940, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":939
 *             field: Field = self.fields[i]
 *             if field.required:
 *                 try:             # <<<<<<<<<<<<<<
 *                     value: object = data2[field.alias]
 *                 except KeyError:
 */
        }

        /* "apischema/deserialization/methods.pyx":946
 *                     )
 *                 else:
 *                     fields_count += 1             # <<<<<<<<<<<<<<
 *                     try:
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 */
        /*else:*/ {
          __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_fields_count, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF_SET(__pyx_v_fields_count, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":947
 *                 else:
 *                     fields_count += 1
 *                     try:             # <<<<<<<<<<<<<<
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_17);
            /*try:*/ {

              /* "apischema/deserialization/methods.pyx":948
 *                     fields_count += 1
 *                     try:
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)             # <<<<<<<<<<<<<<
 *                     except ValidationError as err:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 */
              __pyx_t_4 = ((PyObject *)__pyx_v_field->method);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 948, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_field->name, __pyx_t_3) < 0)) __PYX_ERR(0, 948, __pyx_L32_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "apischema/deserialization/methods.pyx":947
 *                 else:
 *                     fields_count += 1
 *                     try:             # <<<<<<<<<<<<<<
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:
 */
            }
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            goto __pyx_L39_try_end;
            __pyx_L32_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

            /* "apischema/deserialization/methods.pyx":949
 *                     try:
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.alias in data2:
 */
            __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7);
            __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 949, __pyx_L34_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_ErrRestore(__pyx_t_3, __pyx_t_4, __pyx_t_7);
            __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0;
            if (__pyx_t_12) {
              __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 949, __pyx_L34_except_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_err = __pyx_t_4;
              /*try:*/ {

                /* "apischema/deserialization/methods.pyx":950
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:
 *                         field_errors = set_child_error(field_errors, field.alias, err)             # <<<<<<<<<<<<<<
 *             elif field.alias in data2:
 *                 fields_count += 1
 */
                __pyx_t_11 = __pyx_v_field->alias;
                __Pyx_INCREF(__pyx_t_11);
                __pyx_t_5 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_11, __pyx_v_err, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 950, __pyx_L45_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_5);
                __pyx_t_5 = 0;
              }

              /* "apischema/deserialization/methods.pyx":949
 *                     try:
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.alias in data2:
 */
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_DECREF(__pyx_v_err);
                  __pyx_v_err = NULL;
                  goto __pyx_L46;
                }
                __pyx_L45_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                  if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
                  if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
                  __Pyx_XGOTREF(__pyx_t_16);
                  __Pyx_XGOTREF(__pyx_t_15);
                  __Pyx_XGOTREF(__pyx_t_14);
                  __Pyx_XGOTREF(__pyx_t_24);
                  __Pyx_XGOTREF(__pyx_t_25);
                  __Pyx_XGOTREF(__pyx_t_26);
                  __pyx_t_12 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_err);
                    __pyx_v_err = NULL;
                  }
                  if (PY_MAJOR_VERSION >= 3) {
                    __Pyx_XGIVEREF(__pyx_t_24);
                    __Pyx_XGIVEREF(__pyx_t_25);
                    __Pyx_XGIVEREF(__pyx_t_26);
                    __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
                  }
                  __Pyx_XGIVEREF(__pyx_t_16);
                  __Pyx_XGIVEREF(__pyx_t_15);
                  __Pyx_XGIVEREF(__pyx_t_14);
                  __Pyx_ErrRestore(__pyx_t_16, __pyx_t_15, __pyx_t_14);
                  __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
                  __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_23;
                  goto __pyx_L34_except_error;
                }
                __pyx_L46:;
              }
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              goto __pyx_L33_exception_handled;
            }
            goto __pyx_L34_except_error;
            __pyx_L34_except_error:;

            /* "apischema/deserialization/methods.pyx":947
 *                 else:
 *                     fields_count += 1
 *                     try:             # <<<<<<<<<<<<<<
 *                         values[field.name] = DeserializationMethod_deserialize(field.method, value)
 *                     except ValidationError as err:
 */
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            goto __pyx_L26_except_error;
            __pyx_L33_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            __pyx_L39_try_end:;
          }
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L31_try_end;
        __pyx_L24_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":941
 *                 try:
 *                     value: object = data2[field.alias]
 *                 except KeyError:             # <<<<<<<<<<<<<<
 *                     field_errors = set_child_error(
 *                         field_errors, field.alias, ValidationError(self.missing)
 */
        __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
        if (__pyx_t_6) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 941, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_7);

          /* "apischema/deserialization/methods.pyx":943
 *                 except KeyError:
 *                     field_errors = set_child_error(
 *                         field_errors, field.alias, ValidationError(self.missing)             # <<<<<<<<<<<<<<
 *                     )
 *                 else:
 */
          __pyx_t_5 = __pyx_v_field->alias;
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_GetModuleGlobalName(__pyx_t_27, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 943, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_27);
          __pyx_t_28 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_28 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_28)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_28);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          __pyx_t_11 = (__pyx_t_28) ? __Pyx_PyObject_Call2Args(__pyx_t_27, __pyx_t_28, __pyx_v_self->missing) : __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_v_self->missing);
          __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 943, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;

          /* "apischema/deserialization/methods.pyx":942
 *                     value: object = data2[field.alias]
 *                 except KeyError:
 *                     field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                         field_errors, field.alias, ValidationError(self.missing)
 *                     )
 */
          __pyx_t_27 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_5, __pyx_t_11, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 942, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_27);
          __pyx_t_27 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L25_exception_handled;
        }
        goto __pyx_L26_except_error;
        __pyx_L26_except_error:;

        /* "apischema/deserialization/methods.pyx":939
 *             field: Field = self.fields[i]
 *             if field.required:
 *                 try:             # <<<<<<<<<<<<<<
 *                     value: object = data2[field.alias]
 *                 except KeyError:
 */
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L25_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        __pyx_L31_try_end:;
      }

      /* "apischema/deserialization/methods.pyx":938
 *         for i in range(len(self.fields)):
 *             field: Field = self.fields[i]
 *             if field.required:             # <<<<<<<<<<<<<<
 *                 try:
 *                     value: object = data2[field.alias]
 */
      goto __pyx_L23;
    }

    /* "apischema/deserialization/methods.pyx":951
 *                     except ValidationError as err:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.alias in data2:             # <<<<<<<<<<<<<<
 *                 fields_count += 1
 *                 try:
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(0, 951, __pyx_L1_error)
    }
    __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_field->alias, __pyx_v_data2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 951, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "apischema/deserialization/methods.pyx":952
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.alias in data2:
 *                 fields_count += 1             # <<<<<<<<<<<<<<
 *                 try:
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 */
      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_v_fields_count, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 952, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF_SET(__pyx_v_fields_count, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":953
 *             elif field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":954
 *                 fields_count += 1
 *                 try:
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])             # <<<<<<<<<<<<<<
 *                 except ValidationError as err:
 *                     if not field.fall_back_on_default:
 */
          __pyx_t_7 = ((PyObject *)__pyx_v_field->method);
          __Pyx_INCREF(__pyx_t_7);
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 954, __pyx_L53_error)
          }
          __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_field->alias); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L53_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_7), __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 954, __pyx_L53_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_field->name, __pyx_t_3) < 0)) __PYX_ERR(0, 954, __pyx_L53_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":953
 *             elif field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L60_try_end;
        __pyx_L53_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":955
 *                 try:
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 */
        __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7);
        __Pyx_GetModuleGlobalName(__pyx_t_27, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 955, __pyx_L55_except_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_27);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_ErrRestore(__pyx_t_3, __pyx_t_4, __pyx_t_7);
        __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0;
        if (__pyx_t_6) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 955, __pyx_L55_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_v_err = __pyx_t_4;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":956
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 *                     if not field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(
 */
            __pyx_t_1 = ((!(__pyx_v_field->fall_back_on_default != 0)) != 0);
            if (__pyx_t_1) {

              /* "apischema/deserialization/methods.pyx":957
 *                 except ValidationError as err:
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)             # <<<<<<<<<<<<<<
 *             elif field.required_by is not None and not field.required_by.isdisjoint(
 *                 data2
 */
              __pyx_t_27 = __pyx_v_field->alias;
              __Pyx_INCREF(__pyx_t_27);
              __pyx_t_11 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_27, __pyx_v_err, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 957, __pyx_L66_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_11);
              __pyx_t_11 = 0;

              /* "apischema/deserialization/methods.pyx":956
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 *                     if not field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(
 */
            }
          }

          /* "apischema/deserialization/methods.pyx":955
 *                 try:
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L67;
            }
            __pyx_L66_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_24);
              __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_29 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
              }
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_29;
              goto __pyx_L55_except_error;
            }
            __pyx_L67:;
          }
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L54_exception_handled;
        }
        goto __pyx_L55_except_error;
        __pyx_L55_except_error:;

        /* "apischema/deserialization/methods.pyx":953
 *             elif field.alias in data2:
 *                 fields_count += 1
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[field.name] = DeserializationMethod_deserialize(field.method, data2[field.alias])
 *                 except ValidationError as err:
 */
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L54_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L60_try_end:;
      }

      /* "apischema/deserialization/methods.pyx":951
 *                     except ValidationError as err:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.alias in data2:             # <<<<<<<<<<<<<<
 *                 fields_count += 1
 *                 try:
 */
      goto __pyx_L23;
    }

    /* "apischema/deserialization/methods.pyx":958
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(             # <<<<<<<<<<<<<<
 *                 data2
 *             ):
 */
    __pyx_t_2 = (__pyx_v_field->required_by != Py_None);
    __pyx_t_30 = (__pyx_t_2 != 0);
    if (__pyx_t_30) {
    } else {
      __pyx_t_1 = __pyx_t_30;
      goto __pyx_L73_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_field->required_by, __pyx_n_s_isdisjoint); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "apischema/deserialization/methods.pyx":959
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(
 *                 data2             # <<<<<<<<<<<<<<
 *             ):
 *                 requiring: list = sorted(field.required_by & data2.keys())
 */
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_data2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data2);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":958
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(             # <<<<<<<<<<<<<<
 *                 data2
 *             ):
 */
    __pyx_t_30 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_30 < 0)) __PYX_ERR(0, 958, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = ((!__pyx_t_30) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L73_bool_binop_done:;
    if (__pyx_t_1) {

      /* "apischema/deserialization/methods.pyx":961
 *                 data2
 *             ):
 *                 requiring: list = sorted(field.required_by & data2.keys())             # <<<<<<<<<<<<<<
 *                 msg: str = self.missing + f" (required by {requiring})"
 *                 field_errors = set_child_error(
 */
      if (unlikely(__pyx_v_data2 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
        __PYX_ERR(0, 961, __pyx_L1_error)
      }
      __pyx_t_4 = __Pyx_PyDict_Keys(__pyx_v_data2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = PyNumber_And(__pyx_v_field->required_by, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 961, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_31 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_31 == ((int)-1))) __PYX_ERR(0, 961, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_requiring, ((PyObject*)__pyx_t_3));
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":962
 *             ):
 *                 requiring: list = sorted(field.required_by & data2.keys())
 *                 msg: str = self.missing + f" (required by {requiring})"             # <<<<<<<<<<<<<<
 *                 field_errors = set_child_error(
 *                     field_errors, field.alias, ValidationError([msg])
 */
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_32 = 0;
      __pyx_t_33 = 127;
      __Pyx_INCREF(__pyx_kp_u_required_by_2);
      __pyx_t_32 += 14;
      __Pyx_GIVEREF(__pyx_kp_u_required_by_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_required_by_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_requiring, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 962, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_33 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_33) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_33;
      __pyx_t_32 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_INCREF(__pyx_kp_u_);
      __pyx_t_32 += 1;
      __Pyx_GIVEREF(__pyx_kp_u_);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_);
      __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_32, __pyx_t_33); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 962, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_self->missing, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3));
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":964
 *                 msg: str = self.missing + f" (required by {requiring})"
 *                 field_errors = set_child_error(
 *                     field_errors, field.alias, ValidationError([msg])             # <<<<<<<<<<<<<<
 *                 )
 *         if self.aggregate_fields:
 */
      __pyx_t_3 = __pyx_v_field->alias;
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 964, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = PyList_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 964, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_INCREF(__pyx_v_msg);
      __Pyx_GIVEREF(__pyx_v_msg);
      PyList_SET_ITEM(__pyx_t_11, 0, __pyx_v_msg);
      __pyx_t_27 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_27)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_27);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_4 = (__pyx_t_27) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_27, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_11);
      __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 964, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":963
 *                 requiring: list = sorted(field.required_by & data2.keys())
 *                 msg: str = self.missing + f" (required by {requiring})"
 *                 field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                     field_errors, field.alias, ValidationError([msg])
 *                 )
 */
      __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_t_3, __pyx_t_4, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":958
 *                     if not field.fall_back_on_default:
 *                         field_errors = set_child_error(field_errors, field.alias, err)
 *             elif field.required_by is not None and not field.required_by.isdisjoint(             # <<<<<<<<<<<<<<
 *                 data2
 *             ):
 */
    }
    __pyx_L23:;
  }

  /* "apischema/deserialization/methods.pyx":966
 *                     field_errors, field.alias, ValidationError([msg])
 *                 )
 *         if self.aggregate_fields:             # <<<<<<<<<<<<<<
 *             remain = data2.keys() - self.all_aliases
 *             for i in range(len(self.flattened_fields)):
 */
  __pyx_t_1 = (__pyx_v_self->aggregate_fields != 0);
  if (__pyx_t_1) {

    /* "apischema/deserialization/methods.pyx":967
 *                 )
 *         if self.aggregate_fields:
 *             remain = data2.keys() - self.all_aliases             # <<<<<<<<<<<<<<
 *             for i in range(len(self.flattened_fields)):
 *                 flattened_field: FlattenedField = self.flattened_fields[i]
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
      __PYX_ERR(0, 967, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyDict_Keys(__pyx_v_data2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = PyNumber_Subtract(__pyx_t_7, __pyx_v_self->all_aliases); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_remain = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "apischema/deserialization/methods.pyx":968
 *         if self.aggregate_fields:
 *             remain = data2.keys() - self.all_aliases
 *             for i in range(len(self.flattened_fields)):             # <<<<<<<<<<<<<<
 *                 flattened_field: FlattenedField = self.flattened_fields[i]
 *                 flattened: dict = {
 */
    __pyx_t_4 = __pyx_v_self->flattened_fields;
    __Pyx_INCREF(__pyx_t_4);
    if (unlikely(__pyx_t_4 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 968, __pyx_L1_error)
    }
    __pyx_t_20 = PyTuple_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(0, 968, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_21 = __pyx_t_20;
    for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
      __pyx_v_i = __pyx_t_22;

      /* "apischema/deserialization/methods.pyx":969
 *             remain = data2.keys() - self.all_aliases
 *             for i in range(len(self.flattened_fields)):
 *                 flattened_field: FlattenedField = self.flattened_fields[i]             # <<<<<<<<<<<<<<
 *                 flattened: dict = {
 *                     alias: data2[alias]
 */
      if (unlikely(__pyx_v_self->flattened_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 969, __pyx_L1_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->flattened_fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_9apischema_15deserialization_7methods_FlattenedField))))) __PYX_ERR(0, 969, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_flattened_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_t_4));
      __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":970
 *             for i in range(len(self.flattened_fields)):
 *                 flattened_field: FlattenedField = self.flattened_fields[i]
 *                 flattened: dict = {             # <<<<<<<<<<<<<<
 *                     alias: data2[alias]
 *                     for alias in flattened_field.aliases
 */
      { /* enter inner scope */
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 970, __pyx_L80_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "apischema/deserialization/methods.pyx":972
 *                 flattened: dict = {
 *                     alias: data2[alias]
 *                     for alias in flattened_field.aliases             # <<<<<<<<<<<<<<
 *                     if alias in data2
 *                 }
 */
        if (unlikely(__pyx_v_flattened_field->aliases == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
          __PYX_ERR(0, 972, __pyx_L80_error)
        }
        __pyx_t_7 = __pyx_v_flattened_field->aliases; __Pyx_INCREF(__pyx_t_7); __pyx_t_32 = 0;
        for (;;) {
          if (__pyx_t_32 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_32); __Pyx_INCREF(__pyx_t_3); __pyx_t_32++; if (unlikely(0 < 0)) __PYX_ERR(0, 972, __pyx_L80_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_32); __pyx_t_32++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 972, __pyx_L80_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
          __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_alias, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":973
 *                     alias: data2[alias]
 *                     for alias in flattened_field.aliases
 *                     if alias in data2             # <<<<<<<<<<<<<<
 *                 }
 *                 remain.difference_update(flattened)
 */
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
            __PYX_ERR(0, 973, __pyx_L80_error)
          }
          __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_8genexpr1__pyx_v_alias, __pyx_v_data2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 973, __pyx_L80_error)
          __pyx_t_2 = (__pyx_t_1 != 0);
          if (__pyx_t_2) {

            /* "apischema/deserialization/methods.pyx":971
 *                 flattened_field: FlattenedField = self.flattened_fields[i]
 *                 flattened: dict = {
 *                     alias: data2[alias]             # <<<<<<<<<<<<<<
 *                     for alias in flattened_field.aliases
 *                     if alias in data2
 */
            if (unlikely(__pyx_v_data2 == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 971, __pyx_L80_error)
            }
            __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_8genexpr1__pyx_v_alias); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 971, __pyx_L80_error)
            __Pyx_GOTREF(__pyx_t_3);
            if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr1__pyx_v_alias, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 971, __pyx_L80_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "apischema/deserialization/methods.pyx":973
 *                     alias: data2[alias]
 *                     for alias in flattened_field.aliases
 *                     if alias in data2             # <<<<<<<<<<<<<<
 *                 }
 *                 remain.difference_update(flattened)
 */
          }

          /* "apischema/deserialization/methods.pyx":972
 *                 flattened: dict = {
 *                     alias: data2[alias]
 *                     for alias in flattened_field.aliases             # <<<<<<<<<<<<<<
 *                     if alias in data2
 *                 }
 */
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_alias); __pyx_8genexpr1__pyx_v_alias = 0;
        goto __pyx_L84_exit_scope;
        __pyx_L80_error:;
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_alias); __pyx_8genexpr1__pyx_v_alias = 0;
        goto __pyx_L1_error;
        __pyx_L84_exit_scope:;
      } /* exit inner scope */
      __Pyx_XDECREF_SET(__pyx_v_flattened, ((PyObject*)__pyx_t_4));
      __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":975
 *                     if alias in data2
 *                 }
 *                 remain.difference_update(flattened)             # <<<<<<<<<<<<<<
 *                 try:
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_remain, __pyx_n_s_difference_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 975, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_v_flattened) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_flattened);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 975, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":976
 *                 }
 *                 remain.difference_update(flattened)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,
 *                         flattened
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":977
 *                 remain.difference_update(flattened)
 *                 try:
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,             # <<<<<<<<<<<<<<
 *                         flattened
 *                     )
 */
          __pyx_t_4 = ((PyObject *)__pyx_v_flattened_field->method);
          __Pyx_INCREF(__pyx_t_4);

          /* "apischema/deserialization/methods.pyx":978
 *                 try:
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,
 *                         flattened             # <<<<<<<<<<<<<<
 *                     )
 *                 except ValidationError as err:
 */
          __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_flattened); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 977, __pyx_L85_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":977
 *                 remain.difference_update(flattened)
 *                 try:
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,             # <<<<<<<<<<<<<<
 *                         flattened
 *                     )
 */
          if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_flattened_field->name, __pyx_t_7) < 0)) __PYX_ERR(0, 977, __pyx_L85_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "apischema/deserialization/methods.pyx":976
 *                 }
 *                 remain.difference_update(flattened)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,
 *                         flattened
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L92_try_end;
        __pyx_L85_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":980
 *                         flattened
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not flattened_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
        __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_3);
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 980, __pyx_L87_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_11);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_3);
        __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
        if (__pyx_t_12) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 980, __pyx_L87_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_v_err = __pyx_t_4;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":981
 *                     )
 *                 except ValidationError as err:
 *                     if not flattened_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            __pyx_t_2 = ((!(__pyx_v_flattened_field->fall_back_on_default != 0)) != 0);
            if (__pyx_t_2) {

              /* "apischema/deserialization/methods.pyx":982
 *                 except ValidationError as err:
 *                     if not flattened_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)             # <<<<<<<<<<<<<<
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children
 */
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_messages); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 982, __pyx_L98_error)
              __Pyx_GOTREF(__pyx_t_11);
              __pyx_t_27 = __pyx_f_9apischema_15deserialization_7methods_extend_errors(__pyx_v_errors, __pyx_t_11, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 982, __pyx_L98_error)
              __Pyx_GOTREF(__pyx_t_27);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_errors, __pyx_t_27);
              __pyx_t_27 = 0;

              /* "apischema/deserialization/methods.pyx":984
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children             # <<<<<<<<<<<<<<
 *                         )
 *             for i in range(len(self.pattern_fields)):
 */
              __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_children); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 984, __pyx_L98_error)
              __Pyx_GOTREF(__pyx_t_27);
              if (!(likely(PyDict_CheckExact(__pyx_t_27))||((__pyx_t_27) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_27)->tp_name), 0))) __PYX_ERR(0, 984, __pyx_L98_error)

              /* "apischema/deserialization/methods.pyx":983
 *                     if not flattened_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(             # <<<<<<<<<<<<<<
 *                             field_errors, err.children
 *                         )
 */
              __pyx_t_11 = __pyx_f_9apischema_15deserialization_7methods_update_children_errors(__pyx_v_field_errors, ((PyObject*)__pyx_t_27), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 983, __pyx_L98_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_11);
              __pyx_t_11 = 0;

              /* "apischema/deserialization/methods.pyx":981
 *                     )
 *                 except ValidationError as err:
 *                     if not flattened_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            }
          }

          /* "apischema/deserialization/methods.pyx":980
 *                         flattened
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not flattened_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L99;
            }
            __pyx_L98_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_24);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_17);
              __pyx_t_12 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_34 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_17);
                __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
              }
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26);
              __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_34;
              goto __pyx_L87_except_error;
            }
            __pyx_L99:;
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L86_exception_handled;
        }
        goto __pyx_L87_except_error;
        __pyx_L87_except_error:;

        /* "apischema/deserialization/methods.pyx":976
 *                 }
 *                 remain.difference_update(flattened)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[flattened_field.name] = DeserializationMethod_deserialize(flattened_field.method,
 *                         flattened
 */
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L86_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        __pyx_L92_try_end:;
      }
    }

    /* "apischema/deserialization/methods.pyx":986
 *                             field_errors, err.children
 *                         )
 *             for i in range(len(self.pattern_fields)):             # <<<<<<<<<<<<<<
 *                 pattern_field: PatternField = self.pattern_fields[i]
 *                 matched: dict = {
 */
    __pyx_t_7 = __pyx_v_self->pattern_fields;
    __Pyx_INCREF(__pyx_t_7);
    if (unlikely(__pyx_t_7 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 986, __pyx_L1_error)
    }
    __pyx_t_20 = PyTuple_GET_SIZE(__pyx_t_7); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(0, 986, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_21 = __pyx_t_20;
    for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
      __pyx_v_i = __pyx_t_22;

      /* "apischema/deserialization/methods.pyx":987
 *                         )
 *             for i in range(len(self.pattern_fields)):
 *                 pattern_field: PatternField = self.pattern_fields[i]             # <<<<<<<<<<<<<<
 *                 matched: dict = {
 *                     key: data2[key]
 */
      if (unlikely(__pyx_v_self->pattern_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 987, __pyx_L1_error)
      }
      __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->pattern_fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 987, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_9apischema_15deserialization_7methods_PatternField))))) __PYX_ERR(0, 987, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_pattern_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_t_7));
      __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":988
 *             for i in range(len(self.pattern_fields)):
 *                 pattern_field: PatternField = self.pattern_fields[i]
 *                 matched: dict = {             # <<<<<<<<<<<<<<
 *                     key: data2[key]
 *                     for key in remain
 */
      { /* enter inner scope */
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 988, __pyx_L109_error)
        __Pyx_GOTREF(__pyx_t_7);

        /* "apischema/deserialization/methods.pyx":990
 *                 matched: dict = {
 *                     key: data2[key]
 *                     for key in remain             # <<<<<<<<<<<<<<
 *                     if pattern_field.pattern.match(key)
 *                 }
 */
        if (likely(PyList_CheckExact(__pyx_v_remain)) || PyTuple_CheckExact(__pyx_v_remain)) {
          __pyx_t_4 = __pyx_v_remain; __Pyx_INCREF(__pyx_t_4); __pyx_t_32 = 0;
          __pyx_t_35 = NULL;
        } else {
          __pyx_t_32 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_remain); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 990, __pyx_L109_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_35 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 990, __pyx_L109_error)
        }
        for (;;) {
          if (likely(!__pyx_t_35)) {
            if (likely(PyList_CheckExact(__pyx_t_4))) {
              if (__pyx_t_32 >= PyList_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_32); __Pyx_INCREF(__pyx_t_3); __pyx_t_32++; if (unlikely(0 < 0)) __PYX_ERR(0, 990, __pyx_L109_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_32); __pyx_t_32++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L109_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_32 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_32); __Pyx_INCREF(__pyx_t_3); __pyx_t_32++; if (unlikely(0 < 0)) __PYX_ERR(0, 990, __pyx_L109_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_32); __pyx_t_32++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L109_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_35(__pyx_t_4);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 990, __pyx_L109_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_key, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":991
 *                     key: data2[key]
 *                     for key in remain
 *                     if pattern_field.pattern.match(key)             # <<<<<<<<<<<<<<
 *                 }
 *                 remain.difference_update(matched)
 */
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_pattern_field->pattern, __pyx_n_s_match); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 991, __pyx_L109_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_27 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_27)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_27);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          __pyx_t_3 = (__pyx_t_27) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_27, __pyx_8genexpr2__pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_8genexpr2__pyx_v_key);
          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 991, __pyx_L109_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 991, __pyx_L109_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (__pyx_t_2) {

            /* "apischema/deserialization/methods.pyx":989
 *                 pattern_field: PatternField = self.pattern_fields[i]
 *                 matched: dict = {
 *                     key: data2[key]             # <<<<<<<<<<<<<<
 *                     for key in remain
 *                     if pattern_field.pattern.match(key)
 */
            if (unlikely(__pyx_v_data2 == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 989, __pyx_L109_error)
            }
            __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_8genexpr2__pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 989, __pyx_L109_error)
            __Pyx_GOTREF(__pyx_t_3);
            if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_8genexpr2__pyx_v_key, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 989, __pyx_L109_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "apischema/deserialization/methods.pyx":991
 *                     key: data2[key]
 *                     for key in remain
 *                     if pattern_field.pattern.match(key)             # <<<<<<<<<<<<<<
 *                 }
 *                 remain.difference_update(matched)
 */
          }

          /* "apischema/deserialization/methods.pyx":990
 *                 matched: dict = {
 *                     key: data2[key]
 *                     for key in remain             # <<<<<<<<<<<<<<
 *                     if pattern_field.pattern.match(key)
 *                 }
 */
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_key); __pyx_8genexpr2__pyx_v_key = 0;
        goto __pyx_L113_exit_scope;
        __pyx_L109_error:;
        __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_key); __pyx_8genexpr2__pyx_v_key = 0;
        goto __pyx_L1_error;
        __pyx_L113_exit_scope:;
      } /* exit inner scope */
      __Pyx_XDECREF_SET(__pyx_v_matched, ((PyObject*)__pyx_t_7));
      __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":993
 *                     if pattern_field.pattern.match(key)
 *                 }
 *                 remain.difference_update(matched)             # <<<<<<<<<<<<<<
 *                 try:
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_remain, __pyx_n_s_difference_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_matched) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_matched);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":994
 *                 }
 *                 remain.difference_update(matched)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,
 *                         matched
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":995
 *                 remain.difference_update(matched)
 *                 try:
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,             # <<<<<<<<<<<<<<
 *                         matched
 *                     )
 */
          __pyx_t_7 = ((PyObject *)__pyx_v_pattern_field->method);
          __Pyx_INCREF(__pyx_t_7);

          /* "apischema/deserialization/methods.pyx":996
 *                 try:
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,
 *                         matched             # <<<<<<<<<<<<<<
 *                     )
 *                 except ValidationError as err:
 */
          __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_7), __pyx_v_matched); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 995, __pyx_L114_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "apischema/deserialization/methods.pyx":995
 *                 remain.difference_update(matched)
 *                 try:
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,             # <<<<<<<<<<<<<<
 *                         matched
 *                     )
 */
          if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_pattern_field->name, __pyx_t_4) < 0)) __PYX_ERR(0, 995, __pyx_L114_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":994
 *                 }
 *                 remain.difference_update(matched)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,
 *                         matched
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L121_try_end;
        __pyx_L114_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":998
 *                         matched
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not pattern_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
        __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_7, &__pyx_t_3);
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 998, __pyx_L116_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_11);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_ErrRestore(__pyx_t_4, __pyx_t_7, __pyx_t_3);
        __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_3 = 0;
        if (__pyx_t_6) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(0, 998, __pyx_L116_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __pyx_v_err = __pyx_t_7;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":999
 *                     )
 *                 except ValidationError as err:
 *                     if not pattern_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            __pyx_t_2 = ((!(__pyx_v_pattern_field->fall_back_on_default != 0)) != 0);
            if (__pyx_t_2) {

              /* "apischema/deserialization/methods.pyx":1000
 *                 except ValidationError as err:
 *                     if not pattern_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)             # <<<<<<<<<<<<<<
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children
 */
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_messages); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1000, __pyx_L127_error)
              __Pyx_GOTREF(__pyx_t_11);
              __pyx_t_27 = __pyx_f_9apischema_15deserialization_7methods_extend_errors(__pyx_v_errors, __pyx_t_11, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1000, __pyx_L127_error)
              __Pyx_GOTREF(__pyx_t_27);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_errors, __pyx_t_27);
              __pyx_t_27 = 0;

              /* "apischema/deserialization/methods.pyx":1002
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children             # <<<<<<<<<<<<<<
 *                         )
 *             if self.additional_field is not None:
 */
              __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_children); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1002, __pyx_L127_error)
              __Pyx_GOTREF(__pyx_t_27);
              if (!(likely(PyDict_CheckExact(__pyx_t_27))||((__pyx_t_27) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_27)->tp_name), 0))) __PYX_ERR(0, 1002, __pyx_L127_error)

              /* "apischema/deserialization/methods.pyx":1001
 *                     if not pattern_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(             # <<<<<<<<<<<<<<
 *                             field_errors, err.children
 *                         )
 */
              __pyx_t_11 = __pyx_f_9apischema_15deserialization_7methods_update_children_errors(__pyx_v_field_errors, ((PyObject*)__pyx_t_27), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1001, __pyx_L127_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_11);
              __pyx_t_11 = 0;

              /* "apischema/deserialization/methods.pyx":999
 *                     )
 *                 except ValidationError as err:
 *                     if not pattern_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            }
          }

          /* "apischema/deserialization/methods.pyx":998
 *                         matched
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not pattern_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L128;
            }
            __pyx_L127_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_24);
              __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_36 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
              }
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_36;
              goto __pyx_L116_except_error;
            }
            __pyx_L128:;
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L115_exception_handled;
        }
        goto __pyx_L116_except_error;
        __pyx_L116_except_error:;

        /* "apischema/deserialization/methods.pyx":994
 *                 }
 *                 remain.difference_update(matched)
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[pattern_field.name] = DeserializationMethod_deserialize(pattern_field.method,
 *                         matched
 */
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L115_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L121_try_end:;
      }
    }

    /* "apischema/deserialization/methods.pyx":1004
 *                             field_errors, err.children
 *                         )
 *             if self.additional_field is not None:             # <<<<<<<<<<<<<<
 *                 additional: dict = {key: data2[key] for key in remain}
 *                 try:
 */
    __pyx_t_2 = (__pyx_v_self->additional_field != Py_None);
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "apischema/deserialization/methods.pyx":1005
 *                         )
 *             if self.additional_field is not None:
 *                 additional: dict = {key: data2[key] for key in remain}             # <<<<<<<<<<<<<<
 *                 try:
 *                     values[
 */
      { /* enter inner scope */
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1005, __pyx_L137_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (likely(PyList_CheckExact(__pyx_v_remain)) || PyTuple_CheckExact(__pyx_v_remain)) {
          __pyx_t_7 = __pyx_v_remain; __Pyx_INCREF(__pyx_t_7); __pyx_t_20 = 0;
          __pyx_t_35 = NULL;
        } else {
          __pyx_t_20 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_remain); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1005, __pyx_L137_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_35 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 1005, __pyx_L137_error)
        }
        for (;;) {
          if (likely(!__pyx_t_35)) {
            if (likely(PyList_CheckExact(__pyx_t_7))) {
              if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_3); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1005, __pyx_L137_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1005, __pyx_L137_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_3); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1005, __pyx_L137_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1005, __pyx_L137_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_35(__pyx_t_7);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 1005, __pyx_L137_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_key, __pyx_t_3);
          __pyx_t_3 = 0;
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 1005, __pyx_L137_error)
          }
          __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_8genexpr3__pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1005, __pyx_L137_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr3__pyx_v_key, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1005, __pyx_L137_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_key); __pyx_8genexpr3__pyx_v_key = 0;
        goto __pyx_L140_exit_scope;
        __pyx_L137_error:;
        __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_key); __pyx_8genexpr3__pyx_v_key = 0;
        goto __pyx_L1_error;
        __pyx_L140_exit_scope:;
      } /* exit inner scope */
      __pyx_v_additional = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":1006
 *             if self.additional_field is not None:
 *                 additional: dict = {key: data2[key] for key in remain}
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[
 *                         self.additional_field.name
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1009
 *                     values[
 *                         self.additional_field.name
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)             # <<<<<<<<<<<<<<
 *                 except ValidationError as err:
 *                     if not self.additional_field.fall_back_on_default:
 */
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->additional_field, __pyx_n_s_method); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1009, __pyx_L141_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 1009, __pyx_L141_error)
          __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4), __pyx_v_additional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L141_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1008
 *                 try:
 *                     values[
 *                         self.additional_field.name             # <<<<<<<<<<<<<<
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)
 *                 except ValidationError as err:
 */
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->additional_field, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L141_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_t_4, __pyx_t_7) < 0)) __PYX_ERR(0, 1007, __pyx_L141_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "apischema/deserialization/methods.pyx":1006
 *             if self.additional_field is not None:
 *                 additional: dict = {key: data2[key] for key in remain}
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[
 *                         self.additional_field.name
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L146_try_end;
        __pyx_L141_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":1010
 *                         self.additional_field.name
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not self.additional_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
        __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_3);
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1010, __pyx_L143_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_11);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_3);
        __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
        if (__pyx_t_12) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L143_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __pyx_v_err = __pyx_t_4;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":1011
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)
 *                 except ValidationError as err:
 *                     if not self.additional_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->additional_field, __pyx_n_s_fall_back_on_default); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1011, __pyx_L152_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1011, __pyx_L152_error)
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __pyx_t_2 = ((!__pyx_t_1) != 0);
            if (__pyx_t_2) {

              /* "apischema/deserialization/methods.pyx":1012
 *                 except ValidationError as err:
 *                     if not self.additional_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)             # <<<<<<<<<<<<<<
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children
 */
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_messages); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1012, __pyx_L152_error)
              __Pyx_GOTREF(__pyx_t_11);
              __pyx_t_27 = __pyx_f_9apischema_15deserialization_7methods_extend_errors(__pyx_v_errors, __pyx_t_11, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1012, __pyx_L152_error)
              __Pyx_GOTREF(__pyx_t_27);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_errors, __pyx_t_27);
              __pyx_t_27 = 0;

              /* "apischema/deserialization/methods.pyx":1014
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 *                             field_errors, err.children             # <<<<<<<<<<<<<<
 *                         )
 *             elif remain:
 */
              __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_children); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1014, __pyx_L152_error)
              __Pyx_GOTREF(__pyx_t_27);
              if (!(likely(PyDict_CheckExact(__pyx_t_27))||((__pyx_t_27) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_27)->tp_name), 0))) __PYX_ERR(0, 1014, __pyx_L152_error)

              /* "apischema/deserialization/methods.pyx":1013
 *                     if not self.additional_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(             # <<<<<<<<<<<<<<
 *                             field_errors, err.children
 *                         )
 */
              __pyx_t_11 = __pyx_f_9apischema_15deserialization_7methods_update_children_errors(__pyx_v_field_errors, ((PyObject*)__pyx_t_27), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1013, __pyx_L152_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_11);
              __pyx_t_11 = 0;

              /* "apischema/deserialization/methods.pyx":1011
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)
 *                 except ValidationError as err:
 *                     if not self.additional_field.fall_back_on_default:             # <<<<<<<<<<<<<<
 *                         errors = extend_errors(errors, err.messages)
 *                         field_errors = update_children_errors(
 */
            }
          }

          /* "apischema/deserialization/methods.pyx":1010
 *                         self.additional_field.name
 *                     ] = DeserializationMethod_deserialize(self.additional_field.method, additional)
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     if not self.additional_field.fall_back_on_default:
 *                         errors = extend_errors(errors, err.messages)
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L153;
            }
            __pyx_L152_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_24);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_17);
              __pyx_t_12 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_37 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_17);
                __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
              }
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26);
              __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_37;
              goto __pyx_L143_except_error;
            }
            __pyx_L153:;
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L142_exception_handled;
        }
        goto __pyx_L143_except_error;
        __pyx_L143_except_error:;

        /* "apischema/deserialization/methods.pyx":1006
 *             if self.additional_field is not None:
 *                 additional: dict = {key: data2[key] for key in remain}
 *                 try:             # <<<<<<<<<<<<<<
 *                     values[
 *                         self.additional_field.name
 */
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L142_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        __pyx_L146_try_end:;
      }

      /* "apischema/deserialization/methods.pyx":1004
 *                             field_errors, err.children
 *                         )
 *             if self.additional_field is not None:             # <<<<<<<<<<<<<<
 *                 additional: dict = {key: data2[key] for key in remain}
 *                 try:
 */
      goto __pyx_L134;
    }

    /* "apischema/deserialization/methods.pyx":1016
 *                             field_errors, err.children
 *                         )
 *             elif remain:             # <<<<<<<<<<<<<<
 *                 if not self.additional_properties:
 *                     for key in remain:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remain); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1016, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":1017
 *                         )
 *             elif remain:
 *                 if not self.additional_properties:             # <<<<<<<<<<<<<<
 *                     for key in remain:
 *                         if key != self.discriminator:
 */
      __pyx_t_2 = ((!(__pyx_v_self->additional_properties != 0)) != 0);
      if (__pyx_t_2) {

        /* "apischema/deserialization/methods.pyx":1018
 *             elif remain:
 *                 if not self.additional_properties:
 *                     for key in remain:             # <<<<<<<<<<<<<<
 *                         if key != self.discriminator:
 *                             field_errors = set_child_error(
 */
        if (likely(PyList_CheckExact(__pyx_v_remain)) || PyTuple_CheckExact(__pyx_v_remain)) {
          __pyx_t_7 = __pyx_v_remain; __Pyx_INCREF(__pyx_t_7); __pyx_t_20 = 0;
          __pyx_t_35 = NULL;
        } else {
          __pyx_t_20 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_remain); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1018, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_35 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 1018, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_35)) {
            if (likely(PyList_CheckExact(__pyx_t_7))) {
              if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_4); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1018, __pyx_L1_error)
              #else
              __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1018, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
            } else {
              if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_4); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1018, __pyx_L1_error)
              #else
              __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1018, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
            }
          } else {
            __pyx_t_4 = __pyx_t_35(__pyx_t_7);
            if (unlikely(!__pyx_t_4)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 1018, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_4);
          }
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1019
 *                 if not self.additional_properties:
 *                     for key in remain:
 *                         if key != self.discriminator:             # <<<<<<<<<<<<<<
 *                             field_errors = set_child_error(
 *                                 field_errors, key, ValidationError(self.unexpected)
 */
          __pyx_t_4 = PyObject_RichCompare(__pyx_v_key, __pyx_v_self->discriminator, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1019, __pyx_L1_error)
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1019, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (__pyx_t_2) {

            /* "apischema/deserialization/methods.pyx":1021
 *                         if key != self.discriminator:
 *                             field_errors = set_child_error(
 *                                 field_errors, key, ValidationError(self.unexpected)             # <<<<<<<<<<<<<<
 *                             )
 *                 elif self.typed_dict:
 */
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1021, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_11 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_11)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_11);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
              }
            }
            __pyx_t_4 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_11, __pyx_v_self->unexpected) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->unexpected);
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1021, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "apischema/deserialization/methods.pyx":1020
 *                     for key in remain:
 *                         if key != self.discriminator:
 *                             field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                                 field_errors, key, ValidationError(self.unexpected)
 *                             )
 */
            __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_v_key, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1020, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_3);
            __pyx_t_3 = 0;

            /* "apischema/deserialization/methods.pyx":1019
 *                 if not self.additional_properties:
 *                     for key in remain:
 *                         if key != self.discriminator:             # <<<<<<<<<<<<<<
 *                             field_errors = set_child_error(
 *                                 field_errors, key, ValidationError(self.unexpected)
 */
          }

          /* "apischema/deserialization/methods.pyx":1018
 *             elif remain:
 *                 if not self.additional_properties:
 *                     for key in remain:             # <<<<<<<<<<<<<<
 *                         if key != self.discriminator:
 *                             field_errors = set_child_error(
 */
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":1017
 *                         )
 *             elif remain:
 *                 if not self.additional_properties:             # <<<<<<<<<<<<<<
 *                     for key in remain:
 *                         if key != self.discriminator:
 */
        goto __pyx_L159;
      }

      /* "apischema/deserialization/methods.pyx":1023
 *                                 field_errors, key, ValidationError(self.unexpected)
 *                             )
 *                 elif self.typed_dict:             # <<<<<<<<<<<<<<
 *                     for key in remain:
 *                         values[key] = data2[key]
 */
      __pyx_t_2 = (__pyx_v_self->typed_dict != 0);
      if (__pyx_t_2) {

        /* "apischema/deserialization/methods.pyx":1024
 *                             )
 *                 elif self.typed_dict:
 *                     for key in remain:             # <<<<<<<<<<<<<<
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:
 */
        if (likely(PyList_CheckExact(__pyx_v_remain)) || PyTuple_CheckExact(__pyx_v_remain)) {
          __pyx_t_7 = __pyx_v_remain; __Pyx_INCREF(__pyx_t_7); __pyx_t_20 = 0;
          __pyx_t_35 = NULL;
        } else {
          __pyx_t_20 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_remain); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1024, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_35 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 1024, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_35)) {
            if (likely(PyList_CheckExact(__pyx_t_7))) {
              if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_3); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1024, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1024, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_20); __Pyx_INCREF(__pyx_t_3); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1024, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1024, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_35(__pyx_t_7);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(0, 1024, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":1025
 *                 elif self.typed_dict:
 *                     for key in remain:
 *                         values[key] = data2[key]             # <<<<<<<<<<<<<<
 *         elif len(data2) != fields_count:
 *             if not self.additional_properties:
 */
          if (unlikely(__pyx_v_data2 == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 1025, __pyx_L1_error)
          }
          __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1025, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 1025, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":1024
 *                             )
 *                 elif self.typed_dict:
 *                     for key in remain:             # <<<<<<<<<<<<<<
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:
 */
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":1023
 *                                 field_errors, key, ValidationError(self.unexpected)
 *                             )
 *                 elif self.typed_dict:             # <<<<<<<<<<<<<<
 *                     for key in remain:
 *                         values[key] = data2[key]
 */
      }
      __pyx_L159:;

      /* "apischema/deserialization/methods.pyx":1016
 *                             field_errors, err.children
 *                         )
 *             elif remain:             # <<<<<<<<<<<<<<
 *                 if not self.additional_properties:
 *                     for key in remain:
 */
    }
    __pyx_L134:;

    /* "apischema/deserialization/methods.pyx":966
 *                     field_errors, field.alias, ValidationError([msg])
 *                 )
 *         if self.aggregate_fields:             # <<<<<<<<<<<<<<
 *             remain = data2.keys() - self.all_aliases
 *             for i in range(len(self.flattened_fields)):
 */
    goto __pyx_L75;
  }

  /* "apischema/deserialization/methods.pyx":1026
 *                     for key in remain:
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:             # <<<<<<<<<<<<<<
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:
 */
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1026, __pyx_L1_error)
  }
  __pyx_t_20 = PyDict_Size(__pyx_v_data2); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1026, __pyx_L1_error)
  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_20); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_v_fields_count, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1026, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":1027
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:
 *             if not self.additional_properties:             # <<<<<<<<<<<<<<
 *                 for key in data2.keys() - self.all_aliases:
 *                     if key != self.discriminator:
 */
    __pyx_t_2 = ((!(__pyx_v_self->additional_properties != 0)) != 0);
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":1028
 *         elif len(data2) != fields_count:
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                     if key != self.discriminator:
 *                         field_errors = set_child_error(
 */
      if (unlikely(__pyx_v_data2 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
        __PYX_ERR(0, 1028, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_data2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1028, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PyNumber_Subtract(__pyx_t_3, __pyx_v_self->all_aliases); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
        __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_20 = 0;
        __pyx_t_35 = NULL;
      } else {
        __pyx_t_20 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1028, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_35 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 1028, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      for (;;) {
        if (likely(!__pyx_t_35)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_7); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1028, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          } else {
            if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_7); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1028, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          }
        } else {
          __pyx_t_7 = __pyx_t_35(__pyx_t_3);
          if (unlikely(!__pyx_t_7)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 1028, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":1029
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:
 *                     if key != self.discriminator:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(
 *                             field_errors, key, ValidationError(self.unexpected)
 */
        __pyx_t_7 = PyObject_RichCompare(__pyx_v_key, __pyx_v_self->discriminator, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1029, __pyx_L1_error)
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1029, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (__pyx_t_2) {

          /* "apischema/deserialization/methods.pyx":1031
 *                     if key != self.discriminator:
 *                         field_errors = set_child_error(
 *                             field_errors, key, ValidationError(self.unexpected)             # <<<<<<<<<<<<<<
 *                         )
 *             elif self.typed_dict:
 */
          __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_11 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          __pyx_t_7 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_v_self->unexpected) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->unexpected);
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1031, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1030
 *                 for key in data2.keys() - self.all_aliases:
 *                     if key != self.discriminator:
 *                         field_errors = set_child_error(             # <<<<<<<<<<<<<<
 *                             field_errors, key, ValidationError(self.unexpected)
 *                         )
 */
          __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_set_child_error(__pyx_v_field_errors, __pyx_v_key, __pyx_t_7, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF_SET(__pyx_v_field_errors, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1029
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:
 *                     if key != self.discriminator:             # <<<<<<<<<<<<<<
 *                         field_errors = set_child_error(
 *                             field_errors, key, ValidationError(self.unexpected)
 */
        }

        /* "apischema/deserialization/methods.pyx":1028
 *         elif len(data2) != fields_count:
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                     if key != self.discriminator:
 *                         field_errors = set_child_error(
 */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1027
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:
 *             if not self.additional_properties:             # <<<<<<<<<<<<<<
 *                 for key in data2.keys() - self.all_aliases:
 *                     if key != self.discriminator:
 */
      goto __pyx_L165;
    }

    /* "apischema/deserialization/methods.pyx":1033
 *                             field_errors, key, ValidationError(self.unexpected)
 *                         )
 *             elif self.typed_dict:             # <<<<<<<<<<<<<<
 *                 for key in data2.keys() - self.all_aliases:
 *                     values[key] = data2[key]
 */
    __pyx_t_2 = (__pyx_v_self->typed_dict != 0);
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":1034
 *                         )
 *             elif self.typed_dict:
 *                 for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                     values[key] = data2[key]
 *         if self.validators:
 */
      if (unlikely(__pyx_v_data2 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
        __PYX_ERR(0, 1034, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_data2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_v_self->all_aliases); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
        __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_20 = 0;
        __pyx_t_35 = NULL;
      } else {
        __pyx_t_20 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1034, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_35 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 1034, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      for (;;) {
        if (likely(!__pyx_t_35)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_4); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1034, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1034, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          } else {
            if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_4); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1034, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1034, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          }
        } else {
          __pyx_t_4 = __pyx_t_35(__pyx_t_3);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 1034, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":1035
 *             elif self.typed_dict:
 *                 for key in data2.keys() - self.all_aliases:
 *                     values[key] = data2[key]             # <<<<<<<<<<<<<<
 *         if self.validators:
 *             init = None
 */
        if (unlikely(__pyx_v_data2 == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 1035, __pyx_L1_error)
        }
        __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_v_values, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 1035, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":1034
 *                         )
 *             elif self.typed_dict:
 *                 for key in data2.keys() - self.all_aliases:             # <<<<<<<<<<<<<<
 *                     values[key] = data2[key]
 *         if self.validators:
 */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1033
 *                             field_errors, key, ValidationError(self.unexpected)
 *                         )
 *             elif self.typed_dict:             # <<<<<<<<<<<<<<
 *                 for key in data2.keys() - self.all_aliases:
 *                     values[key] = data2[key]
 */
    }
    __pyx_L165:;

    /* "apischema/deserialization/methods.pyx":1026
 *                     for key in remain:
 *                         values[key] = data2[key]
 *         elif len(data2) != fields_count:             # <<<<<<<<<<<<<<
 *             if not self.additional_properties:
 *                 for key in data2.keys() - self.all_aliases:
 */
  }
  __pyx_L75:;

  /* "apischema/deserialization/methods.pyx":1036
 *                 for key in data2.keys() - self.all_aliases:
 *                     values[key] = data2[key]
 *         if self.validators:             # <<<<<<<<<<<<<<
 *             init = None
 *             if self.init_defaults:
 */
  __pyx_t_2 = (__pyx_v_self->validators != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->validators) != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":1037
 *                     values[key] = data2[key]
 *         if self.validators:
 *             init = None             # <<<<<<<<<<<<<<
 *             if self.init_defaults:
 *                 init = {}
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_init = ((PyObject*)Py_None);

    /* "apischema/deserialization/methods.pyx":1038
 *         if self.validators:
 *             init = None
 *             if self.init_defaults:             # <<<<<<<<<<<<<<
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:
 */
    __pyx_t_2 = (__pyx_v_self->init_defaults != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->init_defaults) != 0);
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":1039
 *             init = None
 *             if self.init_defaults:
 *                 init = {}             # <<<<<<<<<<<<<<
 *                 for name, default_factory in self.init_defaults:
 *                     if name in values:
 */
      __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_init, ((PyObject*)__pyx_t_3));
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1040
 *             if self.init_defaults:
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:             # <<<<<<<<<<<<<<
 *                     if name in values:
 *                         init[name] = values[name]
 */
      if (unlikely(__pyx_v_self->init_defaults == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 1040, __pyx_L1_error)
      }
      __pyx_t_3 = __pyx_v_self->init_defaults; __Pyx_INCREF(__pyx_t_3); __pyx_t_20 = 0;
      for (;;) {
        if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_4); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1040, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1040, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_11 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_11);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1040, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1040, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_27 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1040, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_38 = Py_TYPE(__pyx_t_27)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_38(__pyx_t_27); if (unlikely(!__pyx_t_7)) goto __pyx_L175_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_11 = __pyx_t_38(__pyx_t_27); if (unlikely(!__pyx_t_11)) goto __pyx_L175_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_11);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_38(__pyx_t_27), 2) < 0) __PYX_ERR(0, 1040, __pyx_L1_error)
          __pyx_t_38 = NULL;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          goto __pyx_L176_unpacking_done;
          __pyx_L175_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_38 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1040, __pyx_L1_error)
          __pyx_L176_unpacking_done:;
        }
        __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
        __pyx_t_7 = 0;
        __Pyx_XDECREF_SET(__pyx_v_default_factory, __pyx_t_11);
        __pyx_t_11 = 0;

        /* "apischema/deserialization/methods.pyx":1041
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:
 *                     if name in values:             # <<<<<<<<<<<<<<
 *                         init[name] = values[name]
 *                     elif not field_errors or name not in field_errors:
 */
        __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_values, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1041, __pyx_L1_error)
        __pyx_t_1 = (__pyx_t_2 != 0);
        if (__pyx_t_1) {

          /* "apischema/deserialization/methods.pyx":1042
 *                 for name, default_factory in self.init_defaults:
 *                     if name in values:
 *                         init[name] = values[name]             # <<<<<<<<<<<<<<
 *                     elif not field_errors or name not in field_errors:
 *                         assert default_factory is not None
 */
          __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_values, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1042, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (unlikely(PyDict_SetItem(__pyx_v_init, __pyx_v_name, __pyx_t_4) < 0)) __PYX_ERR(0, 1042, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1041
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:
 *                     if name in values:             # <<<<<<<<<<<<<<
 *                         init[name] = values[name]
 *                     elif not field_errors or name not in field_errors:
 */
          goto __pyx_L177;
        }

        /* "apischema/deserialization/methods.pyx":1043
 *                     if name in values:
 *                         init[name] = values[name]
 *                     elif not field_errors or name not in field_errors:             # <<<<<<<<<<<<<<
 *                         assert default_factory is not None
 *                         init[name] = default_factory()
 */
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1043, __pyx_L1_error)
        __pyx_t_30 = ((!__pyx_t_2) != 0);
        if (!__pyx_t_30) {
        } else {
          __pyx_t_1 = __pyx_t_30;
          goto __pyx_L178_bool_binop_done;
        }
        __pyx_t_30 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_field_errors, Py_NE)); if (unlikely(__pyx_t_30 < 0)) __PYX_ERR(0, 1043, __pyx_L1_error)
        __pyx_t_2 = (__pyx_t_30 != 0);
        __pyx_t_1 = __pyx_t_2;
        __pyx_L178_bool_binop_done:;
        if (__pyx_t_1) {

          /* "apischema/deserialization/methods.pyx":1044
 *                         init[name] = values[name]
 *                     elif not field_errors or name not in field_errors:
 *                         assert default_factory is not None             # <<<<<<<<<<<<<<
 *                         init[name] = default_factory()
 *             aliases = values.keys()
 */
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            __pyx_t_1 = (__pyx_v_default_factory != Py_None);
            if (unlikely(!(__pyx_t_1 != 0))) {
              PyErr_SetNone(PyExc_AssertionError);
              __PYX_ERR(0, 1044, __pyx_L1_error)
            }
          }
          #endif

          /* "apischema/deserialization/methods.pyx":1045
 *                     elif not field_errors or name not in field_errors:
 *                         assert default_factory is not None
 *                         init[name] = default_factory()             # <<<<<<<<<<<<<<
 *             aliases = values.keys()
 *             # Don't keep validators when all dependencies are default
 */
          __Pyx_INCREF(__pyx_v_default_factory);
          __pyx_t_11 = __pyx_v_default_factory; __pyx_t_7 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_11);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1045, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(PyDict_SetItem(__pyx_v_init, __pyx_v_name, __pyx_t_4) < 0)) __PYX_ERR(0, 1045, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1043
 *                     if name in values:
 *                         init[name] = values[name]
 *                     elif not field_errors or name not in field_errors:             # <<<<<<<<<<<<<<
 *                         assert default_factory is not None
 *                         init[name] = default_factory()
 */
        }
        __pyx_L177:;

        /* "apischema/deserialization/methods.pyx":1040
 *             if self.init_defaults:
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:             # <<<<<<<<<<<<<<
 *                     if name in values:
 *                         init[name] = values[name]
 */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1038
 *         if self.validators:
 *             init = None
 *             if self.init_defaults:             # <<<<<<<<<<<<<<
 *                 init = {}
 *                 for name, default_factory in self.init_defaults:
 */
    }

    /* "apischema/deserialization/methods.pyx":1046
 *                         assert default_factory is not None
 *                         init[name] = default_factory()
 *             aliases = values.keys()             # <<<<<<<<<<<<<<
 *             # Don't keep validators when all dependencies are default
 *             validators = [
 */
    __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_aliases = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":1048
 *             aliases = values.keys()
 *             # Don't keep validators when all dependencies are default
 *             validators = [             # <<<<<<<<<<<<<<
 *                 v for v in self.validators if not v.dependencies.isdisjoint(aliases)
 *             ]
 */
    { /* enter inner scope */
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L182_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "apischema/deserialization/methods.pyx":1049
 *             # Don't keep validators when all dependencies are default
 *             validators = [
 *                 v for v in self.validators if not v.dependencies.isdisjoint(aliases)             # <<<<<<<<<<<<<<
 *             ]
 *             if field_errors or errors:
 */
      if (unlikely(__pyx_v_self->validators == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 1049, __pyx_L182_error)
      }
      __pyx_t_4 = __pyx_v_self->validators; __Pyx_INCREF(__pyx_t_4); __pyx_t_20 = 0;
      for (;;) {
        if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_20); __Pyx_INCREF(__pyx_t_11); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L182_error)
        #else
        __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1049, __pyx_L182_error)
        __Pyx_GOTREF(__pyx_t_11);
        #endif
        __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_v, __pyx_t_11);
        __pyx_t_11 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr4__pyx_v_v, __pyx_n_s_dependencies); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1049, __pyx_L182_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_isdisjoint); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1049, __pyx_L182_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_27))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_27);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_27, function);
          }
        }
        __pyx_t_11 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_27, __pyx_t_7, __pyx_v_aliases) : __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_v_aliases);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1049, __pyx_L182_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1049, __pyx_L182_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_2 = ((!__pyx_t_1) != 0);
        if (__pyx_t_2) {
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_8genexpr4__pyx_v_v))) __PYX_ERR(0, 1048, __pyx_L182_error)
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_v); __pyx_8genexpr4__pyx_v_v = 0;
      goto __pyx_L186_exit_scope;
      __pyx_L182_error:;
      __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_v); __pyx_8genexpr4__pyx_v_v = 0;
      goto __pyx_L1_error;
      __pyx_L186_exit_scope:;
    } /* exit inner scope */
    __pyx_v_validators = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":1051
 *                 v for v in self.validators if not v.dependencies.isdisjoint(aliases)
 *             ]
 *             if field_errors or errors:             # <<<<<<<<<<<<<<
 *                 error = ValidationError(errors or [], field_errors or {})
 *                 invalid_fields = self.post_init_modified
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1051, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L188_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errors); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_1;
    __pyx_L188_bool_binop_done:;
    if (__pyx_t_2) {

      /* "apischema/deserialization/methods.pyx":1052
 *             ]
 *             if field_errors or errors:
 *                 error = ValidationError(errors or [], field_errors or {})             # <<<<<<<<<<<<<<
 *                 invalid_fields = self.post_init_modified
 *                 if field_errors:
 */
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1052, __pyx_L1_error)
      if (!__pyx_t_2) {
      } else {
        __Pyx_INCREF(__pyx_v_errors);
        __pyx_t_11 = __pyx_v_errors;
        goto __pyx_L190_bool_binop_done;
      }
      __pyx_t_27 = PyList_New(0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_27);
      __pyx_t_11 = __pyx_t_27;
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_L190_bool_binop_done:;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1052, __pyx_L1_error)
      if (!__pyx_t_2) {
      } else {
        __Pyx_INCREF(__pyx_v_field_errors);
        __pyx_t_27 = __pyx_v_field_errors;
        goto __pyx_L192_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_27 = __pyx_t_7;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_L192_bool_binop_done:;
      __pyx_t_7 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_11, __pyx_t_27};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_11, __pyx_t_27};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1052, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_11);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_27);
        __pyx_t_11 = 0;
        __pyx_t_27 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_error = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1053
 *             if field_errors or errors:
 *                 error = ValidationError(errors or [], field_errors or {})
 *                 invalid_fields = self.post_init_modified             # <<<<<<<<<<<<<<
 *                 if field_errors:
 *                     invalid_fields |= field_errors.keys()
 */
      __pyx_t_3 = __pyx_v_self->post_init_modified;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_invalid_fields = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "apischema/deserialization/methods.pyx":1054
 *                 error = ValidationError(errors or [], field_errors or {})
 *                 invalid_fields = self.post_init_modified
 *                 if field_errors:             # <<<<<<<<<<<<<<
 *                     invalid_fields |= field_errors.keys()
 *                 try:
 */
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1054, __pyx_L1_error)
      if (__pyx_t_2) {

        /* "apischema/deserialization/methods.pyx":1055
 *                 invalid_fields = self.post_init_modified
 *                 if field_errors:
 *                     invalid_fields |= field_errors.keys()             # <<<<<<<<<<<<<<
 *                 try:
 *                     valid_validators = [
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_errors, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1055, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyNumber_InPlaceOr(__pyx_v_invalid_fields, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1055, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF_SET(__pyx_v_invalid_fields, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":1054
 *                 error = ValidationError(errors or [], field_errors or {})
 *                 invalid_fields = self.post_init_modified
 *                 if field_errors:             # <<<<<<<<<<<<<<
 *                     invalid_fields |= field_errors.keys()
 *                 try:
 */
      }

      /* "apischema/deserialization/methods.pyx":1056
 *                 if field_errors:
 *                     invalid_fields |= field_errors.keys()
 *                 try:             # <<<<<<<<<<<<<<
 *                     valid_validators = [
 *                         v
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1057
 *                     invalid_fields |= field_errors.keys()
 *                 try:
 *                     valid_validators = [             # <<<<<<<<<<<<<<
 *                         v
 *                         for v in validators
 */
          { /* enter inner scope */
            __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1057, __pyx_L203_error)
            __Pyx_GOTREF(__pyx_t_4);

            /* "apischema/deserialization/methods.pyx":1059
 *                     valid_validators = [
 *                         v
 *                         for v in validators             # <<<<<<<<<<<<<<
 *                         if v.dependencies.isdisjoint(invalid_fields)
 *                     ]
 */
            __pyx_t_3 = __pyx_v_validators; __Pyx_INCREF(__pyx_t_3); __pyx_t_20 = 0;
            for (;;) {
              if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_20); __Pyx_INCREF(__pyx_t_5); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 1059, __pyx_L203_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1059, __pyx_L203_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
              __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_v, __pyx_t_5);
              __pyx_t_5 = 0;

              /* "apischema/deserialization/methods.pyx":1060
 *                         v
 *                         for v in validators
 *                         if v.dependencies.isdisjoint(invalid_fields)             # <<<<<<<<<<<<<<
 *                     ]
 *                     validate(
 */
              __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr5__pyx_v_v, __pyx_n_s_dependencies); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1060, __pyx_L203_error)
              __Pyx_GOTREF(__pyx_t_27);
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_isdisjoint); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1060, __pyx_L203_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              __pyx_t_27 = NULL;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
                __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_11);
                if (likely(__pyx_t_27)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                  __Pyx_INCREF(__pyx_t_27);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_11, function);
                }
              }
              __pyx_t_5 = (__pyx_t_27) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_27, __pyx_v_invalid_fields) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_invalid_fields);
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1060, __pyx_L203_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1060, __pyx_L203_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (__pyx_t_2) {

                /* "apischema/deserialization/methods.pyx":1058
 *                 try:
 *                     valid_validators = [
 *                         v             # <<<<<<<<<<<<<<
 *                         for v in validators
 *                         if v.dependencies.isdisjoint(invalid_fields)
 */
                if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_8genexpr5__pyx_v_v))) __PYX_ERR(0, 1057, __pyx_L203_error)

                /* "apischema/deserialization/methods.pyx":1060
 *                         v
 *                         for v in validators
 *                         if v.dependencies.isdisjoint(invalid_fields)             # <<<<<<<<<<<<<<
 *                     ]
 *                     validate(
 */
              }

              /* "apischema/deserialization/methods.pyx":1059
 *                     valid_validators = [
 *                         v
 *                         for v in validators             # <<<<<<<<<<<<<<
 *                         if v.dependencies.isdisjoint(invalid_fields)
 *                     ]
 */
            }
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_v); __pyx_8genexpr5__pyx_v_v = 0;
            goto __pyx_L207_exit_scope;
            __pyx_L203_error:;
            __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_v); __pyx_8genexpr5__pyx_v_v = 0;
            goto __pyx_L195_error;
            __pyx_L207_exit_scope:;
          } /* exit inner scope */
          __pyx_v_valid_validators = ((PyObject*)__pyx_t_4);
          __pyx_t_4 = 0;

          /* "apischema/deserialization/methods.pyx":1062
 *                         if v.dependencies.isdisjoint(invalid_fields)
 *                     ]
 *                     validate(             # <<<<<<<<<<<<<<
 *                         ValidatorMock(self.constructor.cls, values),
 *                         valid_validators,
 */
          __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_validate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1062, __pyx_L195_error)
          __Pyx_GOTREF(__pyx_t_4);

          /* "apischema/deserialization/methods.pyx":1063
 *                     ]
 *                     validate(
 *                         ValidatorMock(self.constructor.cls, values),             # <<<<<<<<<<<<<<
 *                         valid_validators,
 *                         init,
 */
          __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ValidatorMock); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1063, __pyx_L195_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_11 = NULL;
          __pyx_t_6 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_6 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_5)) {
            PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_self->constructor->cls, __pyx_v_values};
            __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1063, __pyx_L195_error)
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
            PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_self->constructor->cls, __pyx_v_values};
            __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1063, __pyx_L195_error)
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_GOTREF(__pyx_t_3);
          } else
          #endif
          {
            __pyx_t_27 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1063, __pyx_L195_error)
            __Pyx_GOTREF(__pyx_t_27);
            if (__pyx_t_11) {
              __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_11); __pyx_t_11 = NULL;
            }
            __Pyx_INCREF(__pyx_v_self->constructor->cls);
            __Pyx_GIVEREF(__pyx_v_self->constructor->cls);
            PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_6, __pyx_v_self->constructor->cls);
            __Pyx_INCREF(__pyx_v_values);
            __Pyx_GIVEREF(__pyx_v_values);
            PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_6, __pyx_v_values);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1063, __pyx_L195_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

          /* "apischema/deserialization/methods.pyx":1062
 *                         if v.dependencies.isdisjoint(invalid_fields)
 *                     ]
 *                     validate(             # <<<<<<<<<<<<<<
 *                         ValidatorMock(self.constructor.cls, values),
 *                         valid_validators,
 */
          __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1062, __pyx_L195_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
          __Pyx_INCREF(__pyx_v_valid_validators);
          __Pyx_GIVEREF(__pyx_v_valid_validators);
          PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_valid_validators);
          __Pyx_INCREF(__pyx_v_init);
          __Pyx_GIVEREF(__pyx_v_init);
          PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_init);
          __pyx_t_3 = 0;

          /* "apischema/deserialization/methods.pyx":1066
 *                         valid_validators,
 *                         init,
 *                         aliaser=self.aliaser,             # <<<<<<<<<<<<<<
 *                     )
 *                 except ValidationError as err:
 */
          __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1066, __pyx_L195_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_aliaser, __pyx_v_self->aliaser) < 0) __PYX_ERR(0, 1066, __pyx_L195_error)

          /* "apischema/deserialization/methods.pyx":1062
 *                         if v.dependencies.isdisjoint(invalid_fields)
 *                     ]
 *                     validate(             # <<<<<<<<<<<<<<
 *                         ValidatorMock(self.constructor.cls, values),
 *                         valid_validators,
 */
          __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1062, __pyx_L195_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;

          /* "apischema/deserialization/methods.pyx":1056
 *                 if field_errors:
 *                     invalid_fields |= field_errors.keys()
 *                 try:             # <<<<<<<<<<<<<<
 *                     valid_validators = [
 *                         v
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L200_try_end;
        __pyx_L195_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "apischema/deserialization/methods.pyx":1068
 *                         aliaser=self.aliaser,
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     error = merge_errors(error, err)
 *                 raise error
 */
        __Pyx_ErrFetch(&__pyx_t_27, &__pyx_t_3, &__pyx_t_5);
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1068, __pyx_L197_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_27, __pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_ErrRestore(__pyx_t_27, __pyx_t_3, __pyx_t_5);
        __pyx_t_27 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0;
        if (__pyx_t_6) {
          __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_27) < 0) __PYX_ERR(0, 1068, __pyx_L197_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_INCREF(__pyx_t_3);
          __pyx_v_err = __pyx_t_3;
          /*try:*/ {

            /* "apischema/deserialization/methods.pyx":1069
 *                     )
 *                 except ValidationError as err:
 *                     error = merge_errors(error, err)             # <<<<<<<<<<<<<<
 *                 raise error
 *             obj = Constructor_construct(self.constructor, values)
 */
            __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1069, __pyx_L213_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_7 = NULL;
            __pyx_t_6 = 0;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
              if (likely(__pyx_t_7)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_11, function);
                __pyx_t_6 = 1;
              }
            }
            #if CYTHON_FAST_PYCALL
            if (PyFunction_Check(__pyx_t_11)) {
              PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_error, __pyx_v_err};
              __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L213_error)
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_GOTREF(__pyx_t_4);
            } else
            #endif
            #if CYTHON_FAST_PYCCALL
            if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
              PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_error, __pyx_v_err};
              __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L213_error)
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_GOTREF(__pyx_t_4);
            } else
            #endif
            {
              __pyx_t_28 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 1069, __pyx_L213_error)
              __Pyx_GOTREF(__pyx_t_28);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_28, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_INCREF(__pyx_v_error);
              __Pyx_GIVEREF(__pyx_v_error);
              PyTuple_SET_ITEM(__pyx_t_28, 0+__pyx_t_6, __pyx_v_error);
              __Pyx_INCREF(__pyx_v_err);
              __Pyx_GIVEREF(__pyx_v_err);
              PyTuple_SET_ITEM(__pyx_t_28, 1+__pyx_t_6, __pyx_v_err);
              __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L213_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
            }
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF_SET(__pyx_v_error, __pyx_t_4);
            __pyx_t_4 = 0;
          }

          /* "apischema/deserialization/methods.pyx":1068
 *                         aliaser=self.aliaser,
 *                     )
 *                 except ValidationError as err:             # <<<<<<<<<<<<<<
 *                     error = merge_errors(error, err)
 *                 raise error
 */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
              goto __pyx_L214;
            }
            __pyx_L213_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_24);
              __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_39 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_err);
                __pyx_v_err = NULL;
              }
              if (PY_MAJOR_VERSION >= 3) {
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
              }
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
              __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_39;
              goto __pyx_L197_except_error;
            }
            __pyx_L214:;
          }
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
          goto __pyx_L196_exception_handled;
        }
        goto __pyx_L197_except_error;
        __pyx_L197_except_error:;

        /* "apischema/deserialization/methods.pyx":1056
 *                 if field_errors:
 *                     invalid_fields |= field_errors.keys()
 *                 try:             # <<<<<<<<<<<<<<
 *                     valid_validators = [
 *                         v
 */
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L196_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L200_try_end:;
      }

      /* "apischema/deserialization/methods.pyx":1070
 *                 except ValidationError as err:
 *                     error = merge_errors(error, err)
 *                 raise error             # <<<<<<<<<<<<<<
 *             obj = Constructor_construct(self.constructor, values)
 *             return validate(obj, validators, init, aliaser=self.aliaser)
 */
      __Pyx_Raise(__pyx_v_error, 0, 0, 0);
      __PYX_ERR(0, 1070, __pyx_L1_error)

      /* "apischema/deserialization/methods.pyx":1051
 *                 v for v in self.validators if not v.dependencies.isdisjoint(aliases)
 *             ]
 *             if field_errors or errors:             # <<<<<<<<<<<<<<
 *                 error = ValidationError(errors or [], field_errors or {})
 *                 invalid_fields = self.post_init_modified
 */
    }

    /* "apischema/deserialization/methods.pyx":1071
 *                     error = merge_errors(error, err)
 *                 raise error
 *             obj = Constructor_construct(self.constructor, values)             # <<<<<<<<<<<<<<
 *             return validate(obj, validators, init, aliaser=self.aliaser)
 *         elif field_errors or errors:
 */
    __pyx_t_27 = ((PyObject *)__pyx_v_self->constructor);
    __Pyx_INCREF(__pyx_t_27);
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_Constructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_27), __pyx_v_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1071, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __pyx_v_obj = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":1072
 *                 raise error
 *             obj = Constructor_construct(self.constructor, values)
 *             return validate(obj, validators, init, aliaser=self.aliaser)             # <<<<<<<<<<<<<<
 *         elif field_errors or errors:
 *             raise ValidationError(errors or [], field_errors or {})
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_validate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_27 = PyTuple_New(3); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __Pyx_INCREF(__pyx_v_obj);
    __Pyx_GIVEREF(__pyx_v_obj);
    PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_v_obj);
    __Pyx_INCREF(__pyx_v_validators);
    __Pyx_GIVEREF(__pyx_v_validators);
    PyTuple_SET_ITEM(__pyx_t_27, 1, __pyx_v_validators);
    __Pyx_INCREF(__pyx_v_init);
    __Pyx_GIVEREF(__pyx_v_init);
    PyTuple_SET_ITEM(__pyx_t_27, 2, __pyx_v_init);
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_aliaser, __pyx_v_self->aliaser) < 0) __PYX_ERR(0, 1072, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_27, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1036
 *                 for key in data2.keys() - self.all_aliases:
 *                     values[key] = data2[key]
 *         if self.validators:             # <<<<<<<<<<<<<<
 *             init = None
 *             if self.init_defaults:
 */
  }

  /* "apischema/deserialization/methods.pyx":1073
 *             obj = Constructor_construct(self.constructor, values)
 *             return validate(obj, validators, init, aliaser=self.aliaser)
 *         elif field_errors or errors:             # <<<<<<<<<<<<<<
 *             raise ValidationError(errors or [], field_errors or {})
 *         return Constructor_construct(self.constructor, values)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1073, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L219_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errors); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1073, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __pyx_L219_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1074
 *             return validate(obj, validators, init, aliaser=self.aliaser)
 *         elif field_errors or errors:
 *             raise ValidationError(errors or [], field_errors or {})             # <<<<<<<<<<<<<<
 *         return Constructor_construct(self.constructor, values)
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1074, __pyx_L1_error)
    if (!__pyx_t_2) {
    } else {
      __Pyx_INCREF(__pyx_v_errors);
      __pyx_t_27 = __pyx_v_errors;
      goto __pyx_L221_bool_binop_done;
    }
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_27 = __pyx_t_3;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_L221_bool_binop_done:;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_field_errors); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1074, __pyx_L1_error)
    if (!__pyx_t_2) {
    } else {
      __Pyx_INCREF(__pyx_v_field_errors);
      __pyx_t_3 = __pyx_v_field_errors;
      goto __pyx_L223_bool_binop_done;
    }
    __pyx_t_11 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_3 = __pyx_t_11;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_L223_bool_binop_done:;
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_11)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_12 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_27, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1074, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_27, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1074, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_28 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 1074, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_28);
      if (__pyx_t_11) {
        __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_28, 0, __pyx_t_11); __pyx_t_11 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_27);
      PyTuple_SET_ITEM(__pyx_t_28, 0+__pyx_t_12, __pyx_t_27);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_28, 1+__pyx_t_12, __pyx_t_3);
      __pyx_t_27 = 0;
      __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1074, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 1074, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1073
 *             obj = Constructor_construct(self.constructor, values)
 *             return validate(obj, validators, init, aliaser=self.aliaser)
 *         elif field_errors or errors:             # <<<<<<<<<<<<<<
 *             raise ValidationError(errors or [], field_errors or {})
 *         return Constructor_construct(self.constructor, values)
 */
  }

  /* "apischema/deserialization/methods.pyx":1075
 *         elif field_errors or errors:
 *             raise ValidationError(errors or [], field_errors or {})
 *         return Constructor_construct(self.constructor, values)             # <<<<<<<<<<<<<<
 * 
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = ((PyObject *)__pyx_v_self->constructor);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = __pyx_f_9apischema_15deserialization_7methods_Constructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_4), __pyx_v_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":924
 *         return Constructor_construct(self.constructor, data2)
 * 
 * cdef inline ObjectMethod_deserialize(ObjectMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_28);
  __Pyx_AddTraceback("apischema.deserialization.methods.ObjectMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_fields_count);
  __Pyx_XDECREF(__pyx_v_errors);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XDECREF(__pyx_v_field_errors);
  __Pyx_XDECREF((PyObject *)__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_requiring);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_remain);
  __Pyx_XDECREF((PyObject *)__pyx_v_flattened_field);
  __Pyx_XDECREF(__pyx_v_flattened);
  __Pyx_XDECREF((PyObject *)__pyx_v_pattern_field);
  __Pyx_XDECREF(__pyx_v_matched);
  __Pyx_XDECREF(__pyx_v_additional);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_init);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_default_factory);
  __Pyx_XDECREF(__pyx_v_aliases);
  __Pyx_XDECREF(__pyx_v_validators);
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF(__pyx_v_invalid_fields);
  __Pyx_XDECREF(__pyx_v_valid_validators);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_alias);
  __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_key);
  __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_key);
  __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_v);
  __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1077
 *         return Constructor_construct(self.constructor, values)
 * 
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):             # <<<<<<<<<<<<<<
 *         if data is not None:
 *             raise bad_type(data, NoneType)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_NoneMethod_deserialize(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("NoneMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1078
 * 
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):
 *         if data is not None:             # <<<<<<<<<<<<<<
 *             raise bad_type(data, NoneType)
 *         return data
 */
  __pyx_t_1 = (__pyx_v_data != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1079
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):
 *         if data is not None:
 *             raise bad_type(data, NoneType)             # <<<<<<<<<<<<<<
 *         return data
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NoneType); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_data, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1079, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_data, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1079, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_data);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1079, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1078
 * 
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):
 *         if data is not None:             # <<<<<<<<<<<<<<
 *             raise bad_type(data, NoneType)
 *         return data
 */
  }

  /* "apischema/deserialization/methods.pyx":1080
 *         if data is not None:
 *             raise bad_type(data, NoneType)
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cdef inline IntMethod_deserialize(IntMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1077
 *         return Constructor_construct(self.constructor, values)
 * 
 * cdef inline NoneMethod_deserialize(NoneMethod self, object data):             # <<<<<<<<<<<<<<
 *         if data is not None:
 *             raise bad_type(data, NoneType)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.NoneMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1082
 *         return data
 * 
 * cdef inline IntMethod_deserialize(IntMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, int):
 *             raise bad_type(data, int)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_IntMethod_deserialize(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("IntMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1083
 * 
 * cdef inline IntMethod_deserialize(IntMethod self, object data):
 *         if not isinstance(data, int):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, int)
 *         return data
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1084
 * cdef inline IntMethod_deserialize(IntMethod self, object data):
 *         if not isinstance(data, int):
 *             raise bad_type(data, int)             # <<<<<<<<<<<<<<
 *         return data
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyInt_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1084, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyInt_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1084, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1084, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyInt_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyInt_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyInt_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1084, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1084, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1083
 * 
 * cdef inline IntMethod_deserialize(IntMethod self, object data):
 *         if not isinstance(data, int):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, int)
 *         return data
 */
  }

  /* "apischema/deserialization/methods.pyx":1085
 *         if not isinstance(data, int):
 *             raise bad_type(data, int)
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConstrainedIntMethod_deserialize(ConstrainedIntMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1082
 *         return data
 * 
 * cdef inline IntMethod_deserialize(IntMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, int):
 *             raise bad_type(data, int)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("apischema.deserialization.methods.IntMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1087
 *         return data
 * 
 * cdef inline ConstrainedIntMethod_deserialize(ConstrainedIntMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(IntMethod_deserialize(<IntMethod>self, data), self.constraints, None)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedIntMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConstrainedIntMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1088
 * 
 * cdef inline ConstrainedIntMethod_deserialize(ConstrainedIntMethod self, object data):
 *         return validate_constraints(IntMethod_deserialize(<IntMethod>self, data), self.constraints, None)             # <<<<<<<<<<<<<<
 * 
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_IntMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_t_1, ((PyObject*)__pyx_t_2), Py_None, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1087
 *         return data
 * 
 * cdef inline ConstrainedIntMethod_deserialize(ConstrainedIntMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(IntMethod_deserialize(<IntMethod>self, data), self.constraints, None)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedIntMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1090
 *         return validate_constraints(IntMethod_deserialize(<IntMethod>self, data), self.constraints, None)
 * 
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):             # <<<<<<<<<<<<<<
 *         if isinstance(data, float):
 *             return data
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_FloatMethod_deserialize(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("FloatMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1091
 * 
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):
 *         if isinstance(data, float):             # <<<<<<<<<<<<<<
 *             return data
 *         elif isinstance(data, int):
 */
  __pyx_t_1 = PyFloat_Check(__pyx_v_data); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":1092
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):
 *         if isinstance(data, float):
 *             return data             # <<<<<<<<<<<<<<
 *         elif isinstance(data, int):
 *             return float(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_data);
    __pyx_r = __pyx_v_data;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1091
 * 
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):
 *         if isinstance(data, float):             # <<<<<<<<<<<<<<
 *             return data
 *         elif isinstance(data, int):
 */
  }

  /* "apischema/deserialization/methods.pyx":1093
 *         if isinstance(data, float):
 *             return data
 *         elif isinstance(data, int):             # <<<<<<<<<<<<<<
 *             return float(data)
 *         else:
 */
  __pyx_t_2 = PyInt_Check(__pyx_v_data); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (likely(__pyx_t_1)) {

    /* "apischema/deserialization/methods.pyx":1094
 *             return data
 *         elif isinstance(data, int):
 *             return float(data)             # <<<<<<<<<<<<<<
 *         else:
 *             raise bad_type(data, float)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyNumber_Float(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1093
 *         if isinstance(data, float):
 *             return data
 *         elif isinstance(data, int):             # <<<<<<<<<<<<<<
 *             return float(data)
 *         else:
 */
  }

  /* "apischema/deserialization/methods.pyx":1096
 *             return float(data)
 *         else:
 *             raise bad_type(data, float)             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConstrainedFloatMethod_deserialize(ConstrainedFloatMethod self, object data):
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyFloat_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1096, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyFloat_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1096, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1096, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyFloat_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1096, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1096, __pyx_L1_error)
  }

  /* "apischema/deserialization/methods.pyx":1090
 *         return validate_constraints(IntMethod_deserialize(<IntMethod>self, data), self.constraints, None)
 * 
 * cdef inline FloatMethod_deserialize(FloatMethod self, object data):             # <<<<<<<<<<<<<<
 *         if isinstance(data, float):
 *             return data
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("apischema.deserialization.methods.FloatMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1098
 *             raise bad_type(data, float)
 * 
 * cdef inline ConstrainedFloatMethod_deserialize(ConstrainedFloatMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(FloatMethod_deserialize(<FloatMethod>self, data), self.constraints, None)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedFloatMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConstrainedFloatMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1099
 * 
 * cdef inline ConstrainedFloatMethod_deserialize(ConstrainedFloatMethod self, object data):
 *         return validate_constraints(FloatMethod_deserialize(<FloatMethod>self, data), self.constraints, None)             # <<<<<<<<<<<<<<
 * 
 * cdef inline StrMethod_deserialize(StrMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_FloatMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_t_1, ((PyObject*)__pyx_t_2), Py_None, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1098
 *             raise bad_type(data, float)
 * 
 * cdef inline ConstrainedFloatMethod_deserialize(ConstrainedFloatMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(FloatMethod_deserialize(<FloatMethod>self, data), self.constraints, None)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedFloatMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1101
 *         return validate_constraints(FloatMethod_deserialize(<FloatMethod>self, data), self.constraints, None)
 * 
 * cdef inline StrMethod_deserialize(StrMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, str):
 *             raise bad_type(data, str)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_StrMethod_deserialize(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("StrMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1102
 * 
 * cdef inline StrMethod_deserialize(StrMethod self, object data):
 *         if not isinstance(data, str):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, str)
 *         return data
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1103
 * cdef inline StrMethod_deserialize(StrMethod self, object data):
 *         if not isinstance(data, str):
 *             raise bad_type(data, str)             # <<<<<<<<<<<<<<
 *         return data
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyUnicode_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1103, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyUnicode_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1103, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyUnicode_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1103, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1102
 * 
 * cdef inline StrMethod_deserialize(StrMethod self, object data):
 *         if not isinstance(data, str):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, str)
 *         return data
 */
  }

  /* "apischema/deserialization/methods.pyx":1104
 *         if not isinstance(data, str):
 *             raise bad_type(data, str)
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConstrainedStrMethod_deserialize(ConstrainedStrMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1101
 *         return validate_constraints(FloatMethod_deserialize(<FloatMethod>self, data), self.constraints, None)
 * 
 * cdef inline StrMethod_deserialize(StrMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, str):
 *             raise bad_type(data, str)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("apischema.deserialization.methods.StrMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1106
 *         return data
 * 
 * cdef inline ConstrainedStrMethod_deserialize(ConstrainedStrMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(StrMethod_deserialize(<StrMethod>self, data), self.constraints, None)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConstrainedStrMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConstrainedStrMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1107
 * 
 * cdef inline ConstrainedStrMethod_deserialize(ConstrainedStrMethod self, object data):
 *         return validate_constraints(StrMethod_deserialize(<StrMethod>self, data), self.constraints, None)             # <<<<<<<<<<<<<<
 * 
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_StrMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_t_1, ((PyObject*)__pyx_t_2), Py_None, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1106
 *         return data
 * 
 * cdef inline ConstrainedStrMethod_deserialize(ConstrainedStrMethod self, object data):             # <<<<<<<<<<<<<<
 *         return validate_constraints(StrMethod_deserialize(<StrMethod>self, data), self.constraints, None)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConstrainedStrMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1109
 *         return validate_constraints(StrMethod_deserialize(<StrMethod>self, data), self.constraints, None)
 * 
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, bool):
 *             raise bad_type(data, bool)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_BoolMethod_deserialize(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("BoolMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1110
 * 
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):
 *         if not isinstance(data, bool):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, bool)
 *         return data
 */
  __pyx_t_1 = ((PyObject*)&PyBool_Type);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
  if (unlikely(__pyx_t_3)) {

    /* "apischema/deserialization/methods.pyx":1111
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):
 *         if not isinstance(data, bool):
 *             raise bad_type(data, bool)             # <<<<<<<<<<<<<<
 *         return data
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject*)&PyBool_Type)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject*)&PyBool_Type)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject*)&PyBool_Type));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1111, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1110
 * 
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):
 *         if not isinstance(data, bool):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, bool)
 *         return data
 */
  }

  /* "apischema/deserialization/methods.pyx":1112
 *         if not isinstance(data, bool):
 *             raise bad_type(data, bool)
 *         return data             # <<<<<<<<<<<<<<
 * 
 * cdef inline SubprimitiveMethod_deserialize(SubprimitiveMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1109
 *         return validate_constraints(StrMethod_deserialize(<StrMethod>self, data), self.constraints, None)
 * 
 * cdef inline BoolMethod_deserialize(BoolMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, bool):
 *             raise bad_type(data, bool)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("apischema.deserialization.methods.BoolMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1114
 *         return data
 * 
 * cdef inline SubprimitiveMethod_deserialize(SubprimitiveMethod self, object data):             # <<<<<<<<<<<<<<
 *         return self.cls(DeserializationMethod_deserialize(self.method, data))
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_SubprimitiveMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("SubprimitiveMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1115
 * 
 * cdef inline SubprimitiveMethod_deserialize(SubprimitiveMethod self, object data):
 *         return self.cls(DeserializationMethod_deserialize(self.method, data))             # <<<<<<<<<<<<<<
 * 
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->method);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_v_self->cls), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1114
 *         return data
 * 
 * cdef inline SubprimitiveMethod_deserialize(SubprimitiveMethod self, object data):             # <<<<<<<<<<<<<<
 *         return self.cls(DeserializationMethod_deserialize(self.method, data))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.SubprimitiveMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1117
 *         return self.cls(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_TupleMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_elt_errors = 0;
  PyObject *__pyx_v_elts = 0;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_elt_method = 0;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("TupleMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1118
 * 
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  __pyx_t_1 = PyList_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1119
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)             # <<<<<<<<<<<<<<
 *         data2: list = data
 *         if len(data2) != len(self.elt_methods):
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1119, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyList_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1119, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyList_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyList_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyList_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1119, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1118
 * 
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):
 *         if not isinstance(data, list):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, list)
 *         data2: list = data
 */
  }

  /* "apischema/deserialization/methods.pyx":1120
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 *         data2: list = data             # <<<<<<<<<<<<<<
 *         if len(data2) != len(self.elt_methods):
 *             if len(data2) < len(self.elt_methods):
 */
  if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1120, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":1121
 *             raise bad_type(data, list)
 *         data2: list = data
 *         if len(data2) != len(self.elt_methods):             # <<<<<<<<<<<<<<
 *             if len(data2) < len(self.elt_methods):
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 */
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1121, __pyx_L1_error)
  }
  __pyx_t_8 = PyList_GET_SIZE(__pyx_v_data2); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1121, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_self->elt_methods;
  __Pyx_INCREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1121, __pyx_L1_error)
  }
  __pyx_t_9 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = ((__pyx_t_8 != __pyx_t_9) != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":1122
 *         data2: list = data
 *         if len(data2) != len(self.elt_methods):
 *             if len(data2) < len(self.elt_methods):             # <<<<<<<<<<<<<<
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 *             elif len(data2) > len(self.elt_methods):
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1122, __pyx_L1_error)
    }
    __pyx_t_9 = PyList_GET_SIZE(__pyx_v_data2); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1122, __pyx_L1_error)
    __pyx_t_3 = __pyx_v_self->elt_methods;
    __Pyx_INCREF(__pyx_t_3);
    if (unlikely(__pyx_t_3 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1122, __pyx_L1_error)
    }
    __pyx_t_8 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1122, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = ((__pyx_t_9 < __pyx_t_8) != 0);
    if (unlikely(__pyx_t_2)) {

      /* "apischema/deserialization/methods.pyx":1123
 *         if len(data2) != len(self.elt_methods):
 *             if len(data2) < len(self.elt_methods):
 *                 raise ValidationError(format_error(self.min_len_error, data2))             # <<<<<<<<<<<<<<
 *             elif len(data2) > len(self.elt_methods):
 *                 raise ValidationError(format_error(self.max_len_error, data2))
 */
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __pyx_v_self->min_len_error;
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_5 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_7, __pyx_v_data2, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 1123, __pyx_L1_error)

      /* "apischema/deserialization/methods.pyx":1122
 *         data2: list = data
 *         if len(data2) != len(self.elt_methods):
 *             if len(data2) < len(self.elt_methods):             # <<<<<<<<<<<<<<
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 *             elif len(data2) > len(self.elt_methods):
 */
    }

    /* "apischema/deserialization/methods.pyx":1124
 *             if len(data2) < len(self.elt_methods):
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 *             elif len(data2) > len(self.elt_methods):             # <<<<<<<<<<<<<<
 *                 raise ValidationError(format_error(self.max_len_error, data2))
 *             else:
 */
    if (unlikely(__pyx_v_data2 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1124, __pyx_L1_error)
    }
    __pyx_t_8 = PyList_GET_SIZE(__pyx_v_data2); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1124, __pyx_L1_error)
    __pyx_t_3 = __pyx_v_self->elt_methods;
    __Pyx_INCREF(__pyx_t_3);
    if (unlikely(__pyx_t_3 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1124, __pyx_L1_error)
    }
    __pyx_t_9 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1124, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = ((__pyx_t_8 > __pyx_t_9) != 0);
    if (unlikely(__pyx_t_2)) {

      /* "apischema/deserialization/methods.pyx":1125
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 *             elif len(data2) > len(self.elt_methods):
 *                 raise ValidationError(format_error(self.max_len_error, data2))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise NotImplementedError
 */
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_v_self->max_len_error;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_5, __pyx_v_data2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 1125, __pyx_L1_error)

      /* "apischema/deserialization/methods.pyx":1124
 *             if len(data2) < len(self.elt_methods):
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 *             elif len(data2) > len(self.elt_methods):             # <<<<<<<<<<<<<<
 *                 raise ValidationError(format_error(self.max_len_error, data2))
 *             else:
 */
    }

    /* "apischema/deserialization/methods.pyx":1127
 *                 raise ValidationError(format_error(self.max_len_error, data2))
 *             else:
 *                 raise NotImplementedError             # <<<<<<<<<<<<<<
 *         elt_errors: dict = {}
 *         elts: list = [None] * len(self.elt_methods)
 */
    /*else*/ {
      __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
      __PYX_ERR(0, 1127, __pyx_L1_error)
    }

    /* "apischema/deserialization/methods.pyx":1121
 *             raise bad_type(data, list)
 *         data2: list = data
 *         if len(data2) != len(self.elt_methods):             # <<<<<<<<<<<<<<
 *             if len(data2) < len(self.elt_methods):
 *                 raise ValidationError(format_error(self.min_len_error, data2))
 */
  }

  /* "apischema/deserialization/methods.pyx":1128
 *             else:
 *                 raise NotImplementedError
 *         elt_errors: dict = {}             # <<<<<<<<<<<<<<
 *         elts: list = [None] * len(self.elt_methods)
 *         for i in range(len(self.elt_methods)):
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_elt_errors = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":1129
 *                 raise NotImplementedError
 *         elt_errors: dict = {}
 *         elts: list = [None] * len(self.elt_methods)             # <<<<<<<<<<<<<<
 *         for i in range(len(self.elt_methods)):
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 */
  __pyx_t_3 = __pyx_v_self->elt_methods;
  __Pyx_INCREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1129, __pyx_L1_error)
  }
  __pyx_t_9 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyList_New(1 * ((__pyx_t_9<0) ? 0:__pyx_t_9)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_t_9; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      PyList_SET_ITEM(__pyx_t_3, __pyx_temp, Py_None);
    }
  }
  __pyx_v_elts = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":1130
 *         elt_errors: dict = {}
 *         elts: list = [None] * len(self.elt_methods)
 *         for i in range(len(self.elt_methods)):             # <<<<<<<<<<<<<<
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 *             try:
 */
  __pyx_t_3 = __pyx_v_self->elt_methods;
  __Pyx_INCREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1130, __pyx_L1_error)
  }
  __pyx_t_9 = PyTuple_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_8 = __pyx_t_9;
  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_8; __pyx_t_10+=1) {
    __pyx_v_i = __pyx_t_10;

    /* "apischema/deserialization/methods.pyx":1131
 *         elts: list = [None] * len(self.elt_methods)
 *         for i in range(len(self.elt_methods)):
 *             elt_method: DeserializationMethod = self.elt_methods[i]             # <<<<<<<<<<<<<<
 *             try:
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 */
    if (unlikely(__pyx_v_self->elt_methods == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1131, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->elt_methods, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 1131, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_elt_method, ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "apischema/deserialization/methods.pyx":1132
 *         for i in range(len(self.elt_methods)):
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1133
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 *             try:
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 elt_errors[i] = err
 */
        if (unlikely(__pyx_v_data2 == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 1133, __pyx_L8_error)
        }
        __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_data2, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1133, __pyx_L8_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(__pyx_v_elt_method, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1133, __pyx_L8_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(__Pyx_SetItemInt(__pyx_v_elts, __pyx_v_i, __pyx_t_4, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1) < 0)) __PYX_ERR(0, 1133, __pyx_L8_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "apischema/deserialization/methods.pyx":1132
 *         for i in range(len(self.elt_methods)):
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:
 */
      }
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L15_try_end;
      __pyx_L8_error:;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "apischema/deserialization/methods.pyx":1134
 *             try:
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors[i] = err
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
      __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_7);
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L10_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_7);
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_7 = 0;
      if (__pyx_t_6) {
        __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1134, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_v_err = __pyx_t_3;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1135
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:
 *                 elt_errors[i] = err             # <<<<<<<<<<<<<<
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return tuple(elts)
 */
          __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1135, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (unlikely(PyDict_SetItem(__pyx_v_elt_errors, __pyx_t_5, __pyx_v_err) < 0)) __PYX_ERR(0, 1135, __pyx_L21_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }

        /* "apischema/deserialization/methods.pyx":1134
 *             try:
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 elt_errors[i] = err
 *         validate_constraints(data2, self.constraints, elt_errors)
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L22;
          }
          __pyx_L21_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_6 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L10_except_error;
          }
          __pyx_L22:;
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L9_exception_handled;
      }
      goto __pyx_L10_except_error;
      __pyx_L10_except_error:;

      /* "apischema/deserialization/methods.pyx":1132
 *         for i in range(len(self.elt_methods)):
 *             elt_method: DeserializationMethod = self.elt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 elts[i] = DeserializationMethod_deserialize(elt_method, data2[i])
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      goto __pyx_L1_error;
      __pyx_L9_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      __pyx_L15_try_end:;
    }
  }

  /* "apischema/deserialization/methods.pyx":1136
 *             except ValidationError as err:
 *                 elt_errors[i] = err
 *         validate_constraints(data2, self.constraints, elt_errors)             # <<<<<<<<<<<<<<
 *         return tuple(elts)
 * 
 */
  __pyx_t_4 = __pyx_v_self->constraints;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_validate_constraints(__pyx_v_data2, ((PyObject*)__pyx_t_4), __pyx_v_elt_errors, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":1137
 *                 elt_errors[i] = err
 *         validate_constraints(data2, self.constraints, elt_errors)
 *         return tuple(elts)             # <<<<<<<<<<<<<<
 * 
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyList_AsTuple(__pyx_v_elts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1117
 *         return self.cls(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline TupleMethod_deserialize(TupleMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, list):
 *             raise bad_type(data, list)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("apischema.deserialization.methods.TupleMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_elt_errors);
  __Pyx_XDECREF(__pyx_v_elts);
  __Pyx_XDECREF((PyObject *)__pyx_v_elt_method);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1139
 *         return tuple(elts)
 * 
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):             # <<<<<<<<<<<<<<
 *         if data is None:
 *             return None
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_OptionalMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_t_18;
  char const *__pyx_t_19;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  PyObject *__pyx_t_25 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("OptionalMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1140
 * 
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):
 *         if data is None:             # <<<<<<<<<<<<<<
 *             return None
 *         try:
 */
  __pyx_t_1 = (__pyx_v_data == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "apischema/deserialization/methods.pyx":1141
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):
 *         if data is None:
 *             return None             # <<<<<<<<<<<<<<
 *         try:
 *             return DeserializationMethod_deserialize(self.value_method, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1140
 * 
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):
 *         if data is None:             # <<<<<<<<<<<<<<
 *             return None
 *         try:
 */
  }

  /* "apischema/deserialization/methods.pyx":1142
 *         if data is None:
 *             return None
 *         try:             # <<<<<<<<<<<<<<
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":1143
 *             return None
 *         try:
 *             return DeserializationMethod_deserialize(self.value_method, data)             # <<<<<<<<<<<<<<
 *         except ValidationError as err:
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_6 = ((PyObject *)__pyx_v_self->value_method);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_6), __pyx_v_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1143, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_r = __pyx_t_7;
      __pyx_t_7 = 0;
      goto __pyx_L8_try_return;

      /* "apischema/deserialization/methods.pyx":1142
 *         if data is None:
 *             return None
 *         try:             # <<<<<<<<<<<<<<
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:
 */
    }
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "apischema/deserialization/methods.pyx":1144
 *         try:
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:
 *                 return None
 */
    __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8);
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1144, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_9);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_8);
    __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_8 = 0;
    if (__pyx_t_10) {
      __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 1144, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_err = __pyx_t_6;
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1145
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:             # <<<<<<<<<<<<<<
 *                 return None
 *             else:
 */
        __pyx_t_1 = (__pyx_v_self->coercer != Py_None);
        __pyx_t_11 = (__pyx_t_1 != 0);
        if (__pyx_t_11) {
        } else {
          __pyx_t_2 = __pyx_t_11;
          goto __pyx_L18_bool_binop_done;
        }
        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_NoneType); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1145, __pyx_L15_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_INCREF(__pyx_v_self->coercer);
        __pyx_t_13 = __pyx_v_self->coercer; __pyx_t_14 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_14)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_10 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_12, __pyx_v_data};
          __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1145, __pyx_L15_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_12, __pyx_v_data};
          __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1145, __pyx_L15_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        } else
        #endif
        {
          __pyx_t_15 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1145, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_15);
          if (__pyx_t_14) {
            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_12);
          PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_10, __pyx_t_12);
          __Pyx_INCREF(__pyx_v_data);
          __Pyx_GIVEREF(__pyx_v_data);
          PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_10, __pyx_v_data);
          __pyx_t_12 = 0;
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1145, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_11 = (__pyx_t_9 == Py_None);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_1 = (__pyx_t_11 != 0);
        __pyx_t_2 = __pyx_t_1;
        __pyx_L18_bool_binop_done:;
        if (likely(__pyx_t_2)) {

          /* "apischema/deserialization/methods.pyx":1146
 *         except ValidationError as err:
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:
 *                 return None             # <<<<<<<<<<<<<<
 *             else:
 *                 raise merge_errors(err, bad_type(data, NoneType))
 */
          __Pyx_XDECREF(__pyx_r);
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L14_return;

          /* "apischema/deserialization/methods.pyx":1145
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:             # <<<<<<<<<<<<<<
 *                 return None
 *             else:
 */
        }

        /* "apischema/deserialization/methods.pyx":1148
 *                 return None
 *             else:
 *                 raise merge_errors(err, bad_type(data, NoneType))             # <<<<<<<<<<<<<<
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):
 */
        /*else*/ {
          __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1148, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1148, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_NoneType); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1148, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_16 = NULL;
          __pyx_t_10 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_16)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_16);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_10 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_data, __pyx_t_14};
            __pyx_t_15 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_data, __pyx_t_14};
            __pyx_t_15 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          } else
          #endif
          {
            __pyx_t_17 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_17);
            if (__pyx_t_16) {
              __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL;
            }
            __Pyx_INCREF(__pyx_v_data);
            __Pyx_GIVEREF(__pyx_v_data);
            PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_10, __pyx_v_data);
            __Pyx_GIVEREF(__pyx_t_14);
            PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_10, __pyx_t_14);
            __pyx_t_14 = 0;
            __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_17, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_12 = NULL;
          __pyx_t_10 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
            if (likely(__pyx_t_12)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
              __Pyx_INCREF(__pyx_t_12);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_13, function);
              __pyx_t_10 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_13)) {
            PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_err, __pyx_t_15};
            __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
            PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_err, __pyx_t_15};
            __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          } else
          #endif
          {
            __pyx_t_17 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_17);
            if (__pyx_t_12) {
              __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_12); __pyx_t_12 = NULL;
            }
            __Pyx_INCREF(__pyx_v_err);
            __Pyx_GIVEREF(__pyx_v_err);
            PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_10, __pyx_v_err);
            __Pyx_GIVEREF(__pyx_t_15);
            PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_10, __pyx_t_15);
            __pyx_t_15 = 0;
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_17, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1148, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          }
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_Raise(__pyx_t_9, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __PYX_ERR(0, 1148, __pyx_L15_error)
        }
      }

      /* "apischema/deserialization/methods.pyx":1144
 *         try:
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             if self.coercer is not None and self.coercer(NoneType, data) is None:
 *                 return None
 */
      /*finally:*/ {
        __pyx_L15_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          __Pyx_XGOTREF(__pyx_t_23);
          __Pyx_XGOTREF(__pyx_t_24);
          __Pyx_XGOTREF(__pyx_t_25);
          __pyx_t_10 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_25);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
          }
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_22);
          __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
          __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
          goto __pyx_L6_except_error;
        }
        __pyx_L14_return: {
          __pyx_t_25 = __pyx_r;
          __pyx_r = 0;
          __Pyx_DECREF(__pyx_v_err);
          __pyx_v_err = NULL;
          __pyx_r = __pyx_t_25;
          __pyx_t_25 = 0;
          goto __pyx_L7_except_return;
        }
      }
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "apischema/deserialization/methods.pyx":1142
 *         if data is None:
 *             return None
 *         try:             # <<<<<<<<<<<<<<
 *             return DeserializationMethod_deserialize(self.value_method, data)
 *         except ValidationError as err:
 */
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L8_try_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":1139
 *         return tuple(elts)
 * 
 * cdef inline OptionalMethod_deserialize(OptionalMethod self, object data):             # <<<<<<<<<<<<<<
 *         if data is None:
 *             return None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("apischema.deserialization.methods.OptionalMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "apischema/deserialization/methods.pyx":1157
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))             # <<<<<<<<<<<<<<
 *             raise merge_errors(err, bad_type(data, *other_classes))
 * 
 */

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr(__pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1157, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_2generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_UnionByTypeMethod_deserialize_lo, __pyx_n_s_apischema_deserialization_method); if (unlikely(!gen)) __PYX_ERR(0, 1157, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod_deserialize.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L7_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1157, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->method_by_cls == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1157, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->method_by_cls, 1, ((PyObject *)NULL), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_cls);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_cls, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_data)) { __Pyx_RaiseClosureNameError("data"); __PYX_ERR(0, 1157, __pyx_L1_error) }
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_cls != ((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_data)));
    __pyx_t_8 = (__pyx_t_7 != 0);
    if (__pyx_t_8) {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cls);
      __pyx_r = __pyx_cur_scope->__pyx_v_cls;
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
      __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
      __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, yielding value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L7_resume_from_yield:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
      __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1157, __pyx_L1_error)
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1150
 *                 raise merge_errors(err, bad_type(data, NoneType))
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):             # <<<<<<<<<<<<<<
 *         try:
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *__pyx_cur_scope;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_method = 0;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_v_other_classes = NULL;
  PyObject *__pyx_gb_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_2generator = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("UnionByTypeMethod_deserialize", 0);
  __pyx_cur_scope = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(__pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1150, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_data = __pyx_v_data;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);

  /* "apischema/deserialization/methods.pyx":1151
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 *             return DeserializationMethod_deserialize(method, data)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":1152
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):
 *         try:
 *             method: DeserializationMethod = self.method_by_cls[type(data)]             # <<<<<<<<<<<<<<
 *             return DeserializationMethod_deserialize(method, data)
 *         except KeyError:
 */
      if (unlikely(__pyx_cur_scope->__pyx_v_self->method_by_cls == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1152, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_cur_scope->__pyx_v_self->method_by_cls, ((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_data))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 1152, __pyx_L3_error)
      __pyx_v_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":1153
 *         try:
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 *             return DeserializationMethod_deserialize(method, data)             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise bad_type(data, *self.method_by_cls) from None
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __pyx_cur_scope->__pyx_v_data;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(__pyx_v_method, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1153, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L7_try_return;

      /* "apischema/deserialization/methods.pyx":1151
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 *             return DeserializationMethod_deserialize(method, data)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "apischema/deserialization/methods.pyx":1154
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 *             return DeserializationMethod_deserialize(method, data)
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 1154, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_7);

      /* "apischema/deserialization/methods.pyx":1155
 *             return DeserializationMethod_deserialize(method, data)
 *         except KeyError:
 *             raise bad_type(data, *self.method_by_cls) from None             # <<<<<<<<<<<<<<
 *         except ValidationError as err:
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))
 */
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_data);
      __pyx_t_10 = PySequence_Tuple(__pyx_cur_scope->__pyx_v_self->method_by_cls); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = PyNumber_Add(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_10, 0, 0, Py_None);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 1155, __pyx_L5_except_error)
    }

    /* "apischema/deserialization/methods.pyx":1156
 *         except KeyError:
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))
 *             raise merge_errors(err, bad_type(data, *other_classes))
 */
    __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_4, &__pyx_t_5);
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1156, __pyx_L5_except_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_6 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_10);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_ErrRestore(__pyx_t_7, __pyx_t_4, __pyx_t_5);
    __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0;
    if (__pyx_t_6) {
      __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 1156, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_err = __pyx_t_4;
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1157
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))             # <<<<<<<<<<<<<<
 *             raise merge_errors(err, bad_type(data, *other_classes))
 * 
 */
        __pyx_t_10 = __pyx_pf_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1157, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_v_other_classes = __pyx_t_10;
        __pyx_t_10 = 0;

        /* "apischema/deserialization/methods.pyx":1158
 *         except ValidationError as err:
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))
 *             raise merge_errors(err, bad_type(data, *other_classes))             # <<<<<<<<<<<<<<
 * 
 * cdef inline UnionMethod_deserialize(UnionMethod self, object data):
 */
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_data);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_data);
        __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_v_other_classes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = PyNumber_Add(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1158, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = NULL;
        __pyx_t_6 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_11, function);
            __pyx_t_6 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_11)) {
          PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_err, __pyx_t_12};
          __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1158, __pyx_L16_error)
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
          PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_err, __pyx_t_12};
          __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1158, __pyx_L16_error)
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        } else
        #endif
        {
          __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1158, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __pyx_t_13 = NULL;
          }
          __Pyx_INCREF(__pyx_v_err);
          __Pyx_GIVEREF(__pyx_v_err);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_v_err);
          __Pyx_GIVEREF(__pyx_t_12);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_12);
          __pyx_t_12 = 0;
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1158, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_Raise(__pyx_t_10, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __PYX_ERR(0, 1158, __pyx_L16_error)
      }

      /* "apischema/deserialization/methods.pyx":1156
 *         except KeyError:
 *             raise bad_type(data, *self.method_by_cls) from None
 *         except ValidationError as err:             # <<<<<<<<<<<<<<
 *             other_classes = (cls for cls in self.method_by_cls if cls is not type(data))
 *             raise merge_errors(err, bad_type(data, *other_classes))
 */
      /*finally:*/ {
        __pyx_L16_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __pyx_t_6 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
          }
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
          goto __pyx_L5_except_error;
        }
      }
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "apischema/deserialization/methods.pyx":1151
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 *             return DeserializationMethod_deserialize(method, data)
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":1150
 *                 raise merge_errors(err, bad_type(data, NoneType))
 * 
 * cdef inline UnionByTypeMethod_deserialize(UnionByTypeMethod self, object data):             # <<<<<<<<<<<<<<
 *         try:
 *             method: DeserializationMethod = self.method_by_cls[type(data)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionByTypeMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_method);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XDECREF(__pyx_v_other_classes);
  __Pyx_XDECREF(__pyx_gb_9apischema_15deserialization_7methods_29UnionByTypeMethod_deserialize_2generator);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1160
 *             raise merge_errors(err, bad_type(data, *other_classes))
 * 
 * cdef inline UnionMethod_deserialize(UnionMethod self, object data):             # <<<<<<<<<<<<<<
 *         error = None
 *         for i in range(len(self.alt_methods)):
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_UnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_error = NULL;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_alt_method = 0;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("UnionMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1161
 * 
 * cdef inline UnionMethod_deserialize(UnionMethod self, object data):
 *         error = None             # <<<<<<<<<<<<<<
 *         for i in range(len(self.alt_methods)):
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_error = Py_None;

  /* "apischema/deserialization/methods.pyx":1162
 * cdef inline UnionMethod_deserialize(UnionMethod self, object data):
 *         error = None
 *         for i in range(len(self.alt_methods)):             # <<<<<<<<<<<<<<
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 *             try:
 */
  __pyx_t_1 = __pyx_v_self->alt_methods;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1162, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "apischema/deserialization/methods.pyx":1163
 *         error = None
 *         for i in range(len(self.alt_methods)):
 *             alt_method: DeserializationMethod = self.alt_methods[i]             # <<<<<<<<<<<<<<
 *             try:
 *                 return DeserializationMethod_deserialize(alt_method, data)
 */
    if (unlikely(__pyx_v_self->alt_methods == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1163, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->alt_methods, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 1163, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_alt_method, ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "apischema/deserialization/methods.pyx":1164
 *         for i in range(len(self.alt_methods)):
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1165
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 *             try:
 *                 return DeserializationMethod_deserialize(alt_method, data)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(__pyx_v_alt_method, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L9_try_return;

        /* "apischema/deserialization/methods.pyx":1164
 *         for i in range(len(self.alt_methods)):
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:
 */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "apischema/deserialization/methods.pyx":1166
 *             try:
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *         assert error is not None
 */
      __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1166, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_10);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_ErrRestore(__pyx_t_1, __pyx_t_8, __pyx_t_9);
      __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      if (__pyx_t_11) {
        __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_1) < 0) __PYX_ERR(0, 1166, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_8);
        __pyx_v_err = __pyx_t_8;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1167
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)             # <<<<<<<<<<<<<<
 *         assert error is not None
 *         raise error
 */
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1167, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = NULL;
          __pyx_t_11 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_11 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1167, __pyx_L18_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1167, __pyx_L18_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          {
            __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1167, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_14);
            if (__pyx_t_13) {
              __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            }
            __Pyx_INCREF(__pyx_v_error);
            __Pyx_GIVEREF(__pyx_v_error);
            PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_error);
            __Pyx_INCREF(__pyx_v_err);
            __Pyx_GIVEREF(__pyx_v_err);
            PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_v_err);
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1167, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF_SET(__pyx_v_error, __pyx_t_10);
          __pyx_t_10 = 0;
        }

        /* "apischema/deserialization/methods.pyx":1166
 *             try:
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *         assert error is not None
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L19;
          }
          __pyx_L18_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_11 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L7_except_error;
          }
          __pyx_L19:;
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L6_exception_handled;
      }
      goto __pyx_L7_except_error;
      __pyx_L7_except_error:;

      /* "apischema/deserialization/methods.pyx":1164
 *         for i in range(len(self.alt_methods)):
 *             alt_method: DeserializationMethod = self.alt_methods[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 return DeserializationMethod_deserialize(alt_method, data)
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    }
  }

  /* "apischema/deserialization/methods.pyx":1168
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 *         assert error is not None             # <<<<<<<<<<<<<<
 *         raise error
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_23 = (__pyx_v_error != Py_None);
    if (unlikely(!(__pyx_t_23 != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 1168, __pyx_L1_error)
    }
  }
  #endif

  /* "apischema/deserialization/methods.pyx":1169
 *                 error = merge_errors(error, err)
 *         assert error is not None
 *         raise error             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConversionMethod_deserialize(ConversionMethod self, object data):
 */
  __Pyx_Raise(__pyx_v_error, 0, 0, 0);
  __PYX_ERR(0, 1169, __pyx_L1_error)

  /* "apischema/deserialization/methods.pyx":1160
 *             raise merge_errors(err, bad_type(data, *other_classes))
 * 
 * cdef inline UnionMethod_deserialize(UnionMethod self, object data):             # <<<<<<<<<<<<<<
 *         error = None
 *         for i in range(len(self.alt_methods)):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("apischema.deserialization.methods.UnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF((PyObject *)__pyx_v_alt_method);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1171
 *         raise error
 * 
 * cdef inline ConversionMethod_deserialize(ConversionMethod self, object data):             # <<<<<<<<<<<<<<
 *         return self.converter(DeserializationMethod_deserialize(self.method, data))
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConversionMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1172
 * 
 * cdef inline ConversionMethod_deserialize(ConversionMethod self, object data):
 *         return self.converter(DeserializationMethod_deserialize(self.method, data))             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->method);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_2), __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_INCREF(__pyx_v_self->converter);
  __pyx_t_2 = __pyx_v_self->converter; __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1171
 *         raise error
 * 
 * cdef inline ConversionMethod_deserialize(ConversionMethod self, object data):             # <<<<<<<<<<<<<<
 *         return self.converter(DeserializationMethod_deserialize(self.method, data))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1174
 *         return self.converter(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):             # <<<<<<<<<<<<<<
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConversionWithValueErrorMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1175
 * 
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):
 *         value = DeserializationMethod_deserialize(self.method, data)             # <<<<<<<<<<<<<<
 *         try:
 *             return self.converter(value)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.method);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_value = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":1176
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:             # <<<<<<<<<<<<<<
 *             return self.converter(value)
 *         except ValueError as err:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":1177
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:
 *             return self.converter(value)             # <<<<<<<<<<<<<<
 *         except ValueError as err:
 *             raise ValidationError(str(err))
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_self->__pyx_base.converter);
      __pyx_t_1 = __pyx_v_self->__pyx_base.converter; __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_value);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7_try_return;

      /* "apischema/deserialization/methods.pyx":1176
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:             # <<<<<<<<<<<<<<
 *             return self.converter(value)
 *         except ValueError as err:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "apischema/deserialization/methods.pyx":1178
 *         try:
 *             return self.converter(value)
 *         except ValueError as err:             # <<<<<<<<<<<<<<
 *             raise ValidationError(str(err))
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 1178, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_err = __pyx_t_1;
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1179
 *             return self.converter(value)
 *         except ValueError as err:
 *             raise ValidationError(str(err))             # <<<<<<<<<<<<<<
 * 
 * cdef inline ConversionUnionMethod_deserialize(ConversionUnionMethod self, object data):
 */
        __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1179, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_err); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1179, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_9, function);
          }
        }
        __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1179, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_Raise(__pyx_t_8, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __PYX_ERR(0, 1179, __pyx_L14_error)
      }

      /* "apischema/deserialization/methods.pyx":1178
 *         try:
 *             return self.converter(value)
 *         except ValueError as err:             # <<<<<<<<<<<<<<
 *             raise ValidationError(str(err))
 * 
 */
      /*finally:*/ {
        __pyx_L14_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __pyx_t_7 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          }
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
          __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
          goto __pyx_L5_except_error;
        }
      }
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "apischema/deserialization/methods.pyx":1176
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:             # <<<<<<<<<<<<<<
 *             return self.converter(value)
 *         except ValueError as err:
 */
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":1174
 *         return self.converter(DeserializationMethod_deserialize(self.method, data))
 * 
 * cdef inline ConversionWithValueErrorMethod_deserialize(ConversionWithValueErrorMethod self, object data):             # <<<<<<<<<<<<<<
 *         value = DeserializationMethod_deserialize(self.method, data)
 *         try:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionWithValueErrorMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1181
 *             raise ValidationError(str(err))
 * 
 * cdef inline ConversionUnionMethod_deserialize(ConversionUnionMethod self, object data):             # <<<<<<<<<<<<<<
 *         error: Optional[ValidationError] = None
 *         for i in range(len(self.alternatives)):
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_ConversionUnionMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_error = NULL;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v_alternative = 0;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  char const *__pyx_t_23;
  int __pyx_t_24;
  PyObject *__pyx_t_25 = NULL;
  PyObject *__pyx_t_26 = NULL;
  char const *__pyx_t_27;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ConversionUnionMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1182
 * 
 * cdef inline ConversionUnionMethod_deserialize(ConversionUnionMethod self, object data):
 *         error: Optional[ValidationError] = None             # <<<<<<<<<<<<<<
 *         for i in range(len(self.alternatives)):
 *             alternative: ConversionAlternative = self.alternatives[i]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_error = Py_None;

  /* "apischema/deserialization/methods.pyx":1183
 * cdef inline ConversionUnionMethod_deserialize(ConversionUnionMethod self, object data):
 *         error: Optional[ValidationError] = None
 *         for i in range(len(self.alternatives)):             # <<<<<<<<<<<<<<
 *             alternative: ConversionAlternative = self.alternatives[i]
 *             try:
 */
  __pyx_t_1 = __pyx_v_self->alternatives;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1183, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "apischema/deserialization/methods.pyx":1184
 *         error: Optional[ValidationError] = None
 *         for i in range(len(self.alternatives)):
 *             alternative: ConversionAlternative = self.alternatives[i]             # <<<<<<<<<<<<<<
 *             try:
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 */
    if (unlikely(__pyx_v_self->alternatives == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1184, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->alternatives, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_ConversionAlternative))))) __PYX_ERR(0, 1184, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_alternative, ((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "apischema/deserialization/methods.pyx":1185
 *         for i in range(len(self.alternatives)):
 *             alternative: ConversionAlternative = self.alternatives[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1186
 *             alternative: ConversionAlternative = self.alternatives[i]
 *             try:
 *                 value = DeserializationMethod_deserialize(alternative.method, data)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 */
        __pyx_t_1 = ((PyObject *)__pyx_v_alternative->method);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_8 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1), __pyx_v_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1186, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "apischema/deserialization/methods.pyx":1185
 *         for i in range(len(self.alternatives)):
 *             alternative: ConversionAlternative = self.alternatives[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "apischema/deserialization/methods.pyx":1187
 *             try:
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *                 continue
 */
      __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_1, &__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1187, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_8, __pyx_t_10);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_1, __pyx_t_9);
      __pyx_t_8 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0;
      if (__pyx_t_11) {
        __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 1187, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_v_err = __pyx_t_1;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1188
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)             # <<<<<<<<<<<<<<
 *                 continue
 *             try:
 */
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1188, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = NULL;
          __pyx_t_11 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_11 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1188, __pyx_L18_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1188, __pyx_L18_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          {
            __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1188, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_14);
            if (__pyx_t_13) {
              __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
            }
            __Pyx_INCREF(__pyx_v_error);
            __Pyx_GIVEREF(__pyx_v_error);
            PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_error);
            __Pyx_INCREF(__pyx_v_err);
            __Pyx_GIVEREF(__pyx_v_err);
            PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_v_err);
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1188, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF_SET(__pyx_v_error, __pyx_t_10);
          __pyx_t_10 = 0;

          /* "apischema/deserialization/methods.pyx":1189
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 *                 continue             # <<<<<<<<<<<<<<
 *             try:
 *                 return alternative.converter(value)
 */
          goto __pyx_L15_continue;
        }

        /* "apischema/deserialization/methods.pyx":1187
 *             try:
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *                 continue
 */
        /*finally:*/ {
          __pyx_L18_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_11 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
            goto __pyx_L7_except_error;
          }
          __pyx_L15_continue: {
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L14_except_continue;
          }
        }
        __pyx_L14_except_continue:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L11_try_continue;
      }
      goto __pyx_L7_except_error;
      __pyx_L7_except_error:;

      /* "apischema/deserialization/methods.pyx":1185
 *         for i in range(len(self.alternatives)):
 *             alternative: ConversionAlternative = self.alternatives[i]
 *             try:             # <<<<<<<<<<<<<<
 *                 value = DeserializationMethod_deserialize(alternative.method, data)
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L11_try_continue:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L3_continue;
      __pyx_L12_try_end:;
    }

    /* "apischema/deserialization/methods.pyx":1190
 *                 error = merge_errors(error, err)
 *                 continue
 *             try:             # <<<<<<<<<<<<<<
 *                 return alternative.converter(value)
 *             except ValidationError as err:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "apischema/deserialization/methods.pyx":1191
 *                 continue
 *             try:
 *                 return alternative.converter(value)             # <<<<<<<<<<<<<<
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_alternative->converter);
        __pyx_t_1 = __pyx_v_alternative->converter; __pyx_t_9 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_value);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1191, __pyx_L24_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L28_try_return;

        /* "apischema/deserialization/methods.pyx":1190
 *                 error = merge_errors(error, err)
 *                 continue
 *             try:             # <<<<<<<<<<<<<<
 *                 return alternative.converter(value)
 *             except ValidationError as err:
 */
      }
      __pyx_L24_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "apischema/deserialization/methods.pyx":1192
 *             try:
 *                 return alternative.converter(value)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *             except ValueError as err:
 */
      __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_1, &__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1192, __pyx_L26_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_15 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_8, __pyx_t_10);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_1, __pyx_t_9);
      __pyx_t_8 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0;
      if (__pyx_t_15) {
        __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(0, 1192, __pyx_L26_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_v_err = __pyx_t_1;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1193
 *                 return alternative.converter(value)
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)             # <<<<<<<<<<<<<<
 *             except ValueError as err:
 *                 if not alternative.value_error:
 */
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1193, __pyx_L37_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_14 = NULL;
          __pyx_t_15 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_14)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_15 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1193, __pyx_L37_error)
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_error, __pyx_v_err};
            __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1193, __pyx_L37_error)
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_GOTREF(__pyx_t_10);
          } else
          #endif
          {
            __pyx_t_13 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1193, __pyx_L37_error)
            __Pyx_GOTREF(__pyx_t_13);
            if (__pyx_t_14) {
              __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14); __pyx_t_14 = NULL;
            }
            __Pyx_INCREF(__pyx_v_error);
            __Pyx_GIVEREF(__pyx_v_error);
            PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_15, __pyx_v_error);
            __Pyx_INCREF(__pyx_v_err);
            __Pyx_GIVEREF(__pyx_v_err);
            PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_15, __pyx_v_err);
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1193, __pyx_L37_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF_SET(__pyx_v_error, __pyx_t_10);
          __pyx_t_10 = 0;
        }

        /* "apischema/deserialization/methods.pyx":1192
 *             try:
 *                 return alternative.converter(value)
 *             except ValidationError as err:             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, err)
 *             except ValueError as err:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L38;
          }
          __pyx_L37_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_17);
            __pyx_t_15 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
            __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
            __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_23;
            goto __pyx_L26_except_error;
          }
          __pyx_L38:;
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L25_exception_handled;
      }

      /* "apischema/deserialization/methods.pyx":1194
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 *             except ValueError as err:             # <<<<<<<<<<<<<<
 *                 if not alternative.value_error:
 *                     raise
 */
      __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
      if (__pyx_t_11) {
        __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(0, 1194, __pyx_L26_except_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_v_err = __pyx_t_1;
        /*try:*/ {

          /* "apischema/deserialization/methods.pyx":1195
 *                 error = merge_errors(error, err)
 *             except ValueError as err:
 *                 if not alternative.value_error:             # <<<<<<<<<<<<<<
 *                     raise
 *                 error = merge_errors(error, ValidationError(str(err)))
 */
          __pyx_t_24 = ((!(__pyx_v_alternative->value_error != 0)) != 0);
          if (unlikely(__pyx_t_24)) {

            /* "apischema/deserialization/methods.pyx":1196
 *             except ValueError as err:
 *                 if not alternative.value_error:
 *                     raise             # <<<<<<<<<<<<<<
 *                 error = merge_errors(error, ValidationError(str(err)))
 *         assert error is not None
 */
            __Pyx_GIVEREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_1, __pyx_t_9);
            __pyx_t_8 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0; 
            __PYX_ERR(0, 1196, __pyx_L48_error)

            /* "apischema/deserialization/methods.pyx":1195
 *                 error = merge_errors(error, err)
 *             except ValueError as err:
 *                 if not alternative.value_error:             # <<<<<<<<<<<<<<
 *                     raise
 *                 error = merge_errors(error, ValidationError(str(err)))
 */
          }

          /* "apischema/deserialization/methods.pyx":1197
 *                 if not alternative.value_error:
 *                     raise
 *                 error = merge_errors(error, ValidationError(str(err)))             # <<<<<<<<<<<<<<
 *         assert error is not None
 *         raise error
 */
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1197, __pyx_L48_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1197, __pyx_L48_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_25 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_err); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1197, __pyx_L48_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_26 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_14);
            if (likely(__pyx_t_26)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_26);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_14, function);
            }
          }
          __pyx_t_13 = (__pyx_t_26) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_26, __pyx_t_25) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_25);
          __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1197, __pyx_L48_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __pyx_t_14 = NULL;
          __pyx_t_11 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_14)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_11 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_error, __pyx_t_13};
            __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1197, __pyx_L48_error)
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
            PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_error, __pyx_t_13};
            __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1197, __pyx_L48_error)
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          } else
          #endif
          {
            __pyx_t_25 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1197, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_25);
            if (__pyx_t_14) {
              __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_14); __pyx_t_14 = NULL;
            }
            __Pyx_INCREF(__pyx_v_error);
            __Pyx_GIVEREF(__pyx_v_error);
            PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_11, __pyx_v_error);
            __Pyx_GIVEREF(__pyx_t_13);
            PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_11, __pyx_t_13);
            __pyx_t_13 = 0;
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_25, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1197, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          }
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF_SET(__pyx_v_error, __pyx_t_10);
          __pyx_t_10 = 0;
        }

        /* "apischema/deserialization/methods.pyx":1194
 *             except ValidationError as err:
 *                 error = merge_errors(error, err)
 *             except ValueError as err:             # <<<<<<<<<<<<<<
 *                 if not alternative.value_error:
 *                     raise
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_err);
            __pyx_v_err = NULL;
            goto __pyx_L49;
          }
          __pyx_L48_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_11 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_27 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_err);
              __pyx_v_err = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_27;
            goto __pyx_L26_except_error;
          }
          __pyx_L49:;
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L25_exception_handled;
      }
      goto __pyx_L26_except_error;
      __pyx_L26_except_error:;

      /* "apischema/deserialization/methods.pyx":1190
 *                 error = merge_errors(error, err)
 *                 continue
 *             try:             # <<<<<<<<<<<<<<
 *                 return alternative.converter(value)
 *             except ValidationError as err:
 */
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L28_try_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L25_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    }
    __pyx_L3_continue:;
  }

  /* "apischema/deserialization/methods.pyx":1198
 *                     raise
 *                 error = merge_errors(error, ValidationError(str(err)))
 *         assert error is not None             # <<<<<<<<<<<<<<
 *         raise error
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_24 = (__pyx_v_error != Py_None);
    if (unlikely(!(__pyx_t_24 != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(0, 1198, __pyx_L1_error)
    }
  }
  #endif

  /* "apischema/deserialization/methods.pyx":1199
 *                 error = merge_errors(error, ValidationError(str(err)))
 *         assert error is not None
 *         raise error             # <<<<<<<<<<<<<<
 * 
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):
 */
  __Pyx_Raise(__pyx_v_error, 0, 0, 0);
  __PYX_ERR(0, 1199, __pyx_L1_error)

  /* "apischema/deserialization/methods.pyx":1181
 *             raise ValidationError(str(err))
 * 
 * cdef inline ConversionUnionMethod_deserialize(ConversionUnionMethod self, object data):             # <<<<<<<<<<<<<<
 *         error: Optional[ValidationError] = None
 *         for i in range(len(self.alternatives)):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_AddTraceback("apischema.deserialization.methods.ConversionUnionMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF((PyObject *)__pyx_v_alternative);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1201
 *         raise error
 * 
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_DiscriminatorMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_data2 = 0;
  struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_method = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("DiscriminatorMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1202
 * 
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "apischema/deserialization/methods.pyx":1203
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)             # <<<<<<<<<<<<<<
 *         data2: dict = data
 *         if self.alias not in data2:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1203, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_data, ((PyObject *)(&PyDict_Type))};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1203, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_data);
      __Pyx_INCREF(((PyObject *)(&PyDict_Type)));
      __Pyx_GIVEREF(((PyObject *)(&PyDict_Type)));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)(&PyDict_Type)));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1203, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1202
 * 
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):
 *         if not isinstance(data, dict):             # <<<<<<<<<<<<<<
 *             raise bad_type(data, dict)
 *         data2: dict = data
 */
  }

  /* "apischema/deserialization/methods.pyx":1204
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 *         data2: dict = data             # <<<<<<<<<<<<<<
 *         if self.alias not in data2:
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1204, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_data;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_data2 = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "apischema/deserialization/methods.pyx":1205
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         if self.alias not in data2:             # <<<<<<<<<<<<<<
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:
 */
  if (unlikely(__pyx_v_data2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1205, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_self->alias, __pyx_v_data2, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1205, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (unlikely(__pyx_t_1)) {

    /* "apischema/deserialization/methods.pyx":1206
 *         data2: dict = data
 *         if self.alias not in data2:
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})             # <<<<<<<<<<<<<<
 *         try:
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_v_self->missing) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_self->missing);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (PyDict_SetItem(__pyx_t_5, __pyx_v_self->alias, __pyx_t_8) < 0) __PYX_ERR(0, 1206, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_9 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1206, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_6, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_t_5);
      __pyx_t_7 = 0;
      __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1206, __pyx_L1_error)

    /* "apischema/deserialization/methods.pyx":1205
 *             raise bad_type(data, dict)
 *         data2: dict = data
 *         if self.alias not in data2:             # <<<<<<<<<<<<<<
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:
 */
  }

  /* "apischema/deserialization/methods.pyx":1207
 *         if self.alias not in data2:
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 *         except (TypeError, KeyError):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
    __Pyx_XGOTREF(__pyx_t_11);
    __Pyx_XGOTREF(__pyx_t_12);
    __Pyx_XGOTREF(__pyx_t_13);
    /*try:*/ {

      /* "apischema/deserialization/methods.pyx":1208
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]             # <<<<<<<<<<<<<<
 *         except (TypeError, KeyError):
 *             raise ValidationError(
 */
      if (unlikely(__pyx_v_self->mapping == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1208, __pyx_L5_error)
      }
      if (unlikely(__pyx_v_data2 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1208, __pyx_L5_error)
      }
      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_self->alias); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1208, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->mapping, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1208, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(0, 1208, __pyx_L5_error)
      __pyx_v_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "apischema/deserialization/methods.pyx":1207
 *         if self.alias not in data2:
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 *         except (TypeError, KeyError):
 */
    }

    /* "apischema/deserialization/methods.pyx":1219
 *             )
 *         else:
 *             return DeserializationMethod_deserialize(method, data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline NoConstructor_construct(NoConstructor self, dict fields):
 */
    /*else:*/ {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(__pyx_v_method, __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1219, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L8_except_return;
    }
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "apischema/deserialization/methods.pyx":1209
 *         try:
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 *         except (TypeError, KeyError):             # <<<<<<<<<<<<<<
 *             raise ValidationError(
 *                 [],
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(0, 1209, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_9);

      /* "apischema/deserialization/methods.pyx":1210
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 *         except (TypeError, KeyError):
 *             raise ValidationError(             # <<<<<<<<<<<<<<
 *                 [],
 *                 {
 */
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1210, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_7);

      /* "apischema/deserialization/methods.pyx":1211
 *         except (TypeError, KeyError):
 *             raise ValidationError(
 *                 [],             # <<<<<<<<<<<<<<
 *                 {
 *                     self.alias: ValidationError(
 */
      __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1211, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_8);

      /* "apischema/deserialization/methods.pyx":1213
 *                 [],
 *                 {
 *                     self.alias: ValidationError(             # <<<<<<<<<<<<<<
 *                         format_error(self.error, data2[self.alias])
 *                     )
 */
      __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1213, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1213, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_15);

      /* "apischema/deserialization/methods.pyx":1214
 *                 {
 *                     self.alias: ValidationError(
 *                         format_error(self.error, data2[self.alias])             # <<<<<<<<<<<<<<
 *                     )
 *                 },
 */
      __pyx_t_16 = __pyx_v_self->error;
      __Pyx_INCREF(__pyx_t_16);
      if (unlikely(__pyx_v_data2 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1214, __pyx_L7_except_error)
      }
      __pyx_t_17 = __Pyx_PyDict_GetItem(__pyx_v_data2, __pyx_v_self->alias); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1214, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __pyx_t_18 = __pyx_f_9apischema_15deserialization_7methods_format_error(__pyx_t_16, __pyx_t_17, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1214, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __pyx_t_17 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) {
        __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_15);
        if (likely(__pyx_t_17)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
          __Pyx_INCREF(__pyx_t_17);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_15, function);
        }
      }
      __pyx_t_14 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_17, __pyx_t_18) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_18);
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
      if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1213, __pyx_L7_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (PyDict_SetItem(__pyx_t_10, __pyx_v_self->alias, __pyx_t_14) < 0) __PYX_ERR(0, 1213, __pyx_L7_except_error)
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_6 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_8, __pyx_t_10};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L7_except_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_8, __pyx_t_10};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L7_except_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1210, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_6, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_6, __pyx_t_10);
        __pyx_t_8 = 0;
        __pyx_t_10 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 1210, __pyx_L7_except_error)
    }
    goto __pyx_L7_except_error;
    __pyx_L7_except_error:;

    /* "apischema/deserialization/methods.pyx":1207
 *         if self.alias not in data2:
 *             raise ValidationError([], {self.alias: ValidationError(self.missing)})
 *         try:             # <<<<<<<<<<<<<<
 *             method: DeserializationMethod = self.mapping[data2[self.alias]]
 *         except (TypeError, KeyError):
 */
    __Pyx_XGIVEREF(__pyx_t_11);
    __Pyx_XGIVEREF(__pyx_t_12);
    __Pyx_XGIVEREF(__pyx_t_13);
    __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_t_11);
    __Pyx_XGIVEREF(__pyx_t_12);
    __Pyx_XGIVEREF(__pyx_t_13);
    __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
    goto __pyx_L0;
  }

  /* "apischema/deserialization/methods.pyx":1201
 *         raise error
 * 
 * cdef inline DiscriminatorMethod_deserialize(DiscriminatorMethod self, object data):             # <<<<<<<<<<<<<<
 *         if not isinstance(data, dict):
 *             raise bad_type(data, dict)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("apischema.deserialization.methods.DiscriminatorMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data2);
  __Pyx_XDECREF((PyObject *)__pyx_v_method);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1221
 *             return DeserializationMethod_deserialize(method, data)
 * 
 * cdef inline NoConstructor_construct(NoConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         return fields
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_NoConstructor_construct(CYTHON_UNUSED struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("NoConstructor_construct", 0);

  /* "apischema/deserialization/methods.pyx":1222
 * 
 * cdef inline NoConstructor_construct(NoConstructor self, dict fields):
 *         return fields             # <<<<<<<<<<<<<<
 * 
 * cdef inline RawConstructor_construct(RawConstructor self, dict fields):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fields);
  __pyx_r = __pyx_v_fields;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1221
 *             return DeserializationMethod_deserialize(method, data)
 * 
 * cdef inline NoConstructor_construct(NoConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         return fields
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1224
 *         return fields
 * 
 * cdef inline RawConstructor_construct(RawConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         return self.cls(**fields)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_RawConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("RawConstructor_construct", 0);

  /* "apischema/deserialization/methods.pyx":1225
 * 
 * cdef inline RawConstructor_construct(RawConstructor self, dict fields):
 *         return self.cls(**fields)             # <<<<<<<<<<<<<<
 * 
 * cdef inline FieldsConstructor_construct(FieldsConstructor self, dict fields):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_fields == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 1225, __pyx_L1_error)
  }
  __pyx_t_1 = PyDict_Copy(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->__pyx_base.cls, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1224
 *         return fields
 * 
 * cdef inline RawConstructor_construct(RawConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         return self.cls(**fields)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.RawConstructor_construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1227
 *         return self.cls(**fields)
 * 
 * cdef inline FieldsConstructor_construct(FieldsConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         obj: object = object.__new__(self.cls)
 *         obj_dict: dict = obj.__dict__
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_FieldsConstructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_v_obj_dict = 0;
  Py_ssize_t __pyx_v_i;
  struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v_default_field = 0;
  struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v_factory_field = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("FieldsConstructor_construct", 0);

  /* "apischema/deserialization/methods.pyx":1228
 * 
 * cdef inline FieldsConstructor_construct(FieldsConstructor self, dict fields):
 *         obj: object = object.__new__(self.cls)             # <<<<<<<<<<<<<<
 *         obj_dict: dict = obj.__dict__
 *         obj_dict.update(fields)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_self->__pyx_base.cls) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->__pyx_base.cls);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_obj = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":1229
 * cdef inline FieldsConstructor_construct(FieldsConstructor self, dict fields):
 *         obj: object = object.__new__(self.cls)
 *         obj_dict: dict = obj.__dict__             # <<<<<<<<<<<<<<
 *         obj_dict.update(fields)
 *         if len(fields) != self.nb_fields:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1229, __pyx_L1_error)
  __pyx_v_obj_dict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":1230
 *         obj: object = object.__new__(self.cls)
 *         obj_dict: dict = obj.__dict__
 *         obj_dict.update(fields)             # <<<<<<<<<<<<<<
 *         if len(fields) != self.nb_fields:
 *             for i in range(len(self.default_fields)):
 */
  __pyx_t_1 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_obj_dict, __pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":1231
 *         obj_dict: dict = obj.__dict__
 *         obj_dict.update(fields)
 *         if len(fields) != self.nb_fields:             # <<<<<<<<<<<<<<
 *             for i in range(len(self.default_fields)):
 *                 default_field: DefaultField = self.default_fields[i]
 */
  if (unlikely(__pyx_v_fields == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1231, __pyx_L1_error)
  }
  __pyx_t_4 = PyDict_Size(__pyx_v_fields); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1231, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 != __pyx_v_self->nb_fields) != 0);
  if (__pyx_t_5) {

    /* "apischema/deserialization/methods.pyx":1232
 *         obj_dict.update(fields)
 *         if len(fields) != self.nb_fields:
 *             for i in range(len(self.default_fields)):             # <<<<<<<<<<<<<<
 *                 default_field: DefaultField = self.default_fields[i]
 *                 if default_field.name not in fields:
 */
    __pyx_t_1 = __pyx_v_self->default_fields;
    __Pyx_INCREF(__pyx_t_1);
    if (unlikely(__pyx_t_1 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1232, __pyx_L1_error)
    }
    __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __pyx_t_4;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_v_i = __pyx_t_7;

      /* "apischema/deserialization/methods.pyx":1233
 *         if len(fields) != self.nb_fields:
 *             for i in range(len(self.default_fields)):
 *                 default_field: DefaultField = self.default_fields[i]             # <<<<<<<<<<<<<<
 *                 if default_field.name not in fields:
 *                     obj_dict[default_field.name] = default_field.default_value
 */
      if (unlikely(__pyx_v_self->default_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1233, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->default_fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DefaultField))))) __PYX_ERR(0, 1233, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_default_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_t_1));
      __pyx_t_1 = 0;

      /* "apischema/deserialization/methods.pyx":1234
 *             for i in range(len(self.default_fields)):
 *                 default_field: DefaultField = self.default_fields[i]
 *                 if default_field.name not in fields:             # <<<<<<<<<<<<<<
 *                     obj_dict[default_field.name] = default_field.default_value
 *             for i in range(len(self.factory_fields)):
 */
      if (unlikely(__pyx_v_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 1234, __pyx_L1_error)
      }
      __pyx_t_5 = (__Pyx_PyDict_ContainsTF(__pyx_v_default_field->name, __pyx_v_fields, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1234, __pyx_L1_error)
      __pyx_t_8 = (__pyx_t_5 != 0);
      if (__pyx_t_8) {

        /* "apischema/deserialization/methods.pyx":1235
 *                 default_field: DefaultField = self.default_fields[i]
 *                 if default_field.name not in fields:
 *                     obj_dict[default_field.name] = default_field.default_value             # <<<<<<<<<<<<<<
 *             for i in range(len(self.factory_fields)):
 *                 factory_field: FactoryField = self.factory_fields[i]
 */
        __pyx_t_1 = __pyx_v_default_field->default_value;
        __Pyx_INCREF(__pyx_t_1);
        if (unlikely(__pyx_v_obj_dict == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 1235, __pyx_L1_error)
        }
        if (unlikely(PyDict_SetItem(__pyx_v_obj_dict, __pyx_v_default_field->name, __pyx_t_1) < 0)) __PYX_ERR(0, 1235, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "apischema/deserialization/methods.pyx":1234
 *             for i in range(len(self.default_fields)):
 *                 default_field: DefaultField = self.default_fields[i]
 *                 if default_field.name not in fields:             # <<<<<<<<<<<<<<
 *                     obj_dict[default_field.name] = default_field.default_value
 *             for i in range(len(self.factory_fields)):
 */
      }
    }

    /* "apischema/deserialization/methods.pyx":1236
 *                 if default_field.name not in fields:
 *                     obj_dict[default_field.name] = default_field.default_value
 *             for i in range(len(self.factory_fields)):             # <<<<<<<<<<<<<<
 *                 factory_field: FactoryField = self.factory_fields[i]
 *                 if factory_field.name not in fields:
 */
    __pyx_t_1 = __pyx_v_self->factory_fields;
    __Pyx_INCREF(__pyx_t_1);
    if (unlikely(__pyx_t_1 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(0, 1236, __pyx_L1_error)
    }
    __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1236, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __pyx_t_4;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_v_i = __pyx_t_7;

      /* "apischema/deserialization/methods.pyx":1237
 *                     obj_dict[default_field.name] = default_field.default_value
 *             for i in range(len(self.factory_fields)):
 *                 factory_field: FactoryField = self.factory_fields[i]             # <<<<<<<<<<<<<<
 *                 if factory_field.name not in fields:
 *                     obj_dict[factory_field.name] = factory_field.factory()
 */
      if (unlikely(__pyx_v_self->factory_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 1237, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->factory_fields, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_FactoryField))))) __PYX_ERR(0, 1237, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_factory_field, ((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_t_1));
      __pyx_t_1 = 0;

      /* "apischema/deserialization/methods.pyx":1238
 *             for i in range(len(self.factory_fields)):
 *                 factory_field: FactoryField = self.factory_fields[i]
 *                 if factory_field.name not in fields:             # <<<<<<<<<<<<<<
 *                     obj_dict[factory_field.name] = factory_field.factory()
 *         return obj
 */
      if (unlikely(__pyx_v_fields == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
        __PYX_ERR(0, 1238, __pyx_L1_error)
      }
      __pyx_t_8 = (__Pyx_PyDict_ContainsTF(__pyx_v_factory_field->name, __pyx_v_fields, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1238, __pyx_L1_error)
      __pyx_t_5 = (__pyx_t_8 != 0);
      if (__pyx_t_5) {

        /* "apischema/deserialization/methods.pyx":1239
 *                 factory_field: FactoryField = self.factory_fields[i]
 *                 if factory_field.name not in fields:
 *                     obj_dict[factory_field.name] = factory_field.factory()             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
        __Pyx_INCREF(__pyx_v_factory_field->factory);
        __pyx_t_2 = __pyx_v_factory_field->factory; __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(__pyx_v_obj_dict == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 1239, __pyx_L1_error)
        }
        if (unlikely(PyDict_SetItem(__pyx_v_obj_dict, __pyx_v_factory_field->name, __pyx_t_1) < 0)) __PYX_ERR(0, 1239, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "apischema/deserialization/methods.pyx":1238
 *             for i in range(len(self.factory_fields)):
 *                 factory_field: FactoryField = self.factory_fields[i]
 *                 if factory_field.name not in fields:             # <<<<<<<<<<<<<<
 *                     obj_dict[factory_field.name] = factory_field.factory()
 *         return obj
 */
      }
    }

    /* "apischema/deserialization/methods.pyx":1231
 *         obj_dict: dict = obj.__dict__
 *         obj_dict.update(fields)
 *         if len(fields) != self.nb_fields:             # <<<<<<<<<<<<<<
 *             for i in range(len(self.default_fields)):
 *                 default_field: DefaultField = self.default_fields[i]
 */
  }

  /* "apischema/deserialization/methods.pyx":1240
 *                 if factory_field.name not in fields:
 *                     obj_dict[factory_field.name] = factory_field.factory()
 *         return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline Constraint_validate(Constraint self, object data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "apischema/deserialization/methods.pyx":1227
 *         return self.cls(**fields)
 * 
 * cdef inline FieldsConstructor_construct(FieldsConstructor self, dict fields):             # <<<<<<<<<<<<<<
 *         obj: object = object.__new__(self.cls)
 *         obj_dict: dict = obj.__dict__
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.FieldsConstructor_construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XDECREF(__pyx_v_obj_dict);
  __Pyx_XDECREF((PyObject *)__pyx_v_default_field);
  __Pyx_XDECREF((PyObject *)__pyx_v_factory_field);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1242
 *         return obj
 * 
 * cdef inline Constraint_validate(Constraint self, object data):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_Constraint_validate(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_v__dispatch;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Constraint_validate", 0);

  /* "apischema/deserialization/methods.pyx":1243
 * 
 * cdef inline Constraint_validate(Constraint self, object data):
 *     cdef int _dispatch = self._dispatch             # <<<<<<<<<<<<<<
 *     if _dispatch == 0:
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)
 */
  __pyx_t_1 = __pyx_v_self->_dispatch;
  __pyx_v__dispatch = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":1244
 * cdef inline Constraint_validate(Constraint self, object data):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)
 *     elif _dispatch == 1:
 */
  switch (__pyx_v__dispatch) {
    case 0:

    /* "apischema/deserialization/methods.pyx":1245
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 1:
 *         return MaximumConstraint_validate(<MaximumConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1245, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MinimumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1244
 * cdef inline Constraint_validate(Constraint self, object data):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)
 *     elif _dispatch == 1:
 */
    break;
    case 1:

    /* "apischema/deserialization/methods.pyx":1247
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)
 *     elif _dispatch == 1:
 *         return MaximumConstraint_validate(<MaximumConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 2:
 *         return ExclusiveMinimumConstraint_validate(<ExclusiveMinimumConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1247, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MaximumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1246
 *     if _dispatch == 0:
 *         return MinimumConstraint_validate(<MinimumConstraint>self, data)
 *     elif _dispatch == 1:             # <<<<<<<<<<<<<<
 *         return MaximumConstraint_validate(<MaximumConstraint>self, data)
 *     elif _dispatch == 2:
 */
    break;
    case 2:

    /* "apischema/deserialization/methods.pyx":1249
 *         return MaximumConstraint_validate(<MaximumConstraint>self, data)
 *     elif _dispatch == 2:
 *         return ExclusiveMinimumConstraint_validate(<ExclusiveMinimumConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 3:
 *         return ExclusiveMaximumConstraint_validate(<ExclusiveMaximumConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1249, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1248
 *     elif _dispatch == 1:
 *         return MaximumConstraint_validate(<MaximumConstraint>self, data)
 *     elif _dispatch == 2:             # <<<<<<<<<<<<<<
 *         return ExclusiveMinimumConstraint_validate(<ExclusiveMinimumConstraint>self, data)
 *     elif _dispatch == 3:
 */
    break;
    case 3:

    /* "apischema/deserialization/methods.pyx":1251
 *         return ExclusiveMinimumConstraint_validate(<ExclusiveMinimumConstraint>self, data)
 *     elif _dispatch == 3:
 *         return ExclusiveMaximumConstraint_validate(<ExclusiveMaximumConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 4:
 *         return MultipleOfConstraint_validate(<MultipleOfConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1251, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1250
 *     elif _dispatch == 2:
 *         return ExclusiveMinimumConstraint_validate(<ExclusiveMinimumConstraint>self, data)
 *     elif _dispatch == 3:             # <<<<<<<<<<<<<<
 *         return ExclusiveMaximumConstraint_validate(<ExclusiveMaximumConstraint>self, data)
 *     elif _dispatch == 4:
 */
    break;
    case 4:

    /* "apischema/deserialization/methods.pyx":1253
 *         return ExclusiveMaximumConstraint_validate(<ExclusiveMaximumConstraint>self, data)
 *     elif _dispatch == 4:
 *         return MultipleOfConstraint_validate(<MultipleOfConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 5:
 *         return MinLengthConstraint_validate(<MinLengthConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_data); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MultipleOfConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1252
 *     elif _dispatch == 3:
 *         return ExclusiveMaximumConstraint_validate(<ExclusiveMaximumConstraint>self, data)
 *     elif _dispatch == 4:             # <<<<<<<<<<<<<<
 *         return MultipleOfConstraint_validate(<MultipleOfConstraint>self, data)
 *     elif _dispatch == 5:
 */
    break;
    case 5:

    /* "apischema/deserialization/methods.pyx":1255
 *         return MultipleOfConstraint_validate(<MultipleOfConstraint>self, data)
 *     elif _dispatch == 5:
 *         return MinLengthConstraint_validate(<MinLengthConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 6:
 *         return MaxLengthConstraint_validate(<MaxLengthConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1255, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MinLengthConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1254
 *     elif _dispatch == 4:
 *         return MultipleOfConstraint_validate(<MultipleOfConstraint>self, data)
 *     elif _dispatch == 5:             # <<<<<<<<<<<<<<
 *         return MinLengthConstraint_validate(<MinLengthConstraint>self, data)
 *     elif _dispatch == 6:
 */
    break;
    case 6:

    /* "apischema/deserialization/methods.pyx":1257
 *         return MinLengthConstraint_validate(<MinLengthConstraint>self, data)
 *     elif _dispatch == 6:
 *         return MaxLengthConstraint_validate(<MaxLengthConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 7:
 *         return PatternConstraint_validate(<PatternConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1257, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MaxLengthConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1256
 *     elif _dispatch == 5:
 *         return MinLengthConstraint_validate(<MinLengthConstraint>self, data)
 *     elif _dispatch == 6:             # <<<<<<<<<<<<<<
 *         return MaxLengthConstraint_validate(<MaxLengthConstraint>self, data)
 *     elif _dispatch == 7:
 */
    break;
    case 7:

    /* "apischema/deserialization/methods.pyx":1259
 *         return MaxLengthConstraint_validate(<MaxLengthConstraint>self, data)
 *     elif _dispatch == 7:
 *         return PatternConstraint_validate(<PatternConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 8:
 *         return MinItemsConstraint_validate(<MinItemsConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyUnicode_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1259, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_PatternConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1258
 *     elif _dispatch == 6:
 *         return MaxLengthConstraint_validate(<MaxLengthConstraint>self, data)
 *     elif _dispatch == 7:             # <<<<<<<<<<<<<<
 *         return PatternConstraint_validate(<PatternConstraint>self, data)
 *     elif _dispatch == 8:
 */
    break;
    case 8:

    /* "apischema/deserialization/methods.pyx":1261
 *         return PatternConstraint_validate(<PatternConstraint>self, data)
 *     elif _dispatch == 8:
 *         return MinItemsConstraint_validate(<MinItemsConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 9:
 *         return MaxItemsConstraint_validate(<MaxItemsConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1261, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MinItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1260
 *     elif _dispatch == 7:
 *         return PatternConstraint_validate(<PatternConstraint>self, data)
 *     elif _dispatch == 8:             # <<<<<<<<<<<<<<
 *         return MinItemsConstraint_validate(<MinItemsConstraint>self, data)
 *     elif _dispatch == 9:
 */
    break;
    case 9:

    /* "apischema/deserialization/methods.pyx":1263
 *         return MinItemsConstraint_validate(<MinItemsConstraint>self, data)
 *     elif _dispatch == 9:
 *         return MaxItemsConstraint_validate(<MaxItemsConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 10:
 *         return UniqueItemsConstraint_validate(<UniqueItemsConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1263, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MaxItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1262
 *     elif _dispatch == 8:
 *         return MinItemsConstraint_validate(<MinItemsConstraint>self, data)
 *     elif _dispatch == 9:             # <<<<<<<<<<<<<<
 *         return MaxItemsConstraint_validate(<MaxItemsConstraint>self, data)
 *     elif _dispatch == 10:
 */
    break;
    case 10:

    /* "apischema/deserialization/methods.pyx":1265
 *         return MaxItemsConstraint_validate(<MaxItemsConstraint>self, data)
 *     elif _dispatch == 10:
 *         return UniqueItemsConstraint_validate(<UniqueItemsConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 11:
 *         return MinPropertiesConstraint_validate(<MinPropertiesConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyList_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1265, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_UniqueItemsConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1264
 *     elif _dispatch == 9:
 *         return MaxItemsConstraint_validate(<MaxItemsConstraint>self, data)
 *     elif _dispatch == 10:             # <<<<<<<<<<<<<<
 *         return UniqueItemsConstraint_validate(<UniqueItemsConstraint>self, data)
 *     elif _dispatch == 11:
 */
    break;
    case 11:

    /* "apischema/deserialization/methods.pyx":1267
 *         return UniqueItemsConstraint_validate(<UniqueItemsConstraint>self, data)
 *     elif _dispatch == 11:
 *         return MinPropertiesConstraint_validate(<MinPropertiesConstraint>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 12:
 *         return MaxPropertiesConstraint_validate(<MaxPropertiesConstraint>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1267, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MinPropertiesConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1266
 *     elif _dispatch == 10:
 *         return UniqueItemsConstraint_validate(<UniqueItemsConstraint>self, data)
 *     elif _dispatch == 11:             # <<<<<<<<<<<<<<
 *         return MinPropertiesConstraint_validate(<MinPropertiesConstraint>self, data)
 *     elif _dispatch == 12:
 */
    break;
    case 12:

    /* "apischema/deserialization/methods.pyx":1269
 *         return MinPropertiesConstraint_validate(<MinPropertiesConstraint>self, data)
 *     elif _dispatch == 12:
 *         return MaxPropertiesConstraint_validate(<MaxPropertiesConstraint>self, data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyDict_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 1269, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods_MaxPropertiesConstraint_validate(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v_self), ((PyObject*)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1268
 *     elif _dispatch == 11:
 *         return MinPropertiesConstraint_validate(<MinPropertiesConstraint>self, data)
 *     elif _dispatch == 12:             # <<<<<<<<<<<<<<
 *         return MaxPropertiesConstraint_validate(<MaxPropertiesConstraint>self, data)
 * 
 */
    break;
    default: break;
  }

  /* "apischema/deserialization/methods.pyx":1242
 *         return obj
 * 
 * cdef inline Constraint_validate(Constraint self, object data):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constraint_validate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1271
 *         return MaxPropertiesConstraint_validate(<MaxPropertiesConstraint>self, data)
 * 
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_DeserializationMethod_deserialize(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_v__dispatch;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("DeserializationMethod_deserialize", 0);

  /* "apischema/deserialization/methods.pyx":1272
 * 
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):
 *     cdef int _dispatch = self._dispatch             # <<<<<<<<<<<<<<
 *     if _dispatch == 0:
 *         return RecMethod_deserialize(<RecMethod>self, data)
 */
  __pyx_t_1 = __pyx_v_self->_dispatch;
  __pyx_v__dispatch = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":1273
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return RecMethod_deserialize(<RecMethod>self, data)
 *     elif _dispatch == 1:
 */
  switch (__pyx_v__dispatch) {
    case 0:

    /* "apischema/deserialization/methods.pyx":1274
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 *         return RecMethod_deserialize(<RecMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 1:
 *         return ValidatorMethod_deserialize(<ValidatorMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_RecMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1273
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return RecMethod_deserialize(<RecMethod>self, data)
 *     elif _dispatch == 1:
 */
    break;
    case 1:

    /* "apischema/deserialization/methods.pyx":1276
 *         return RecMethod_deserialize(<RecMethod>self, data)
 *     elif _dispatch == 1:
 *         return ValidatorMethod_deserialize(<ValidatorMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 2:
 *         return CoercerMethod_deserialize(<CoercerMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ValidatorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1275
 *     if _dispatch == 0:
 *         return RecMethod_deserialize(<RecMethod>self, data)
 *     elif _dispatch == 1:             # <<<<<<<<<<<<<<
 *         return ValidatorMethod_deserialize(<ValidatorMethod>self, data)
 *     elif _dispatch == 2:
 */
    break;
    case 2:

    /* "apischema/deserialization/methods.pyx":1278
 *         return ValidatorMethod_deserialize(<ValidatorMethod>self, data)
 *     elif _dispatch == 2:
 *         return CoercerMethod_deserialize(<CoercerMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 3:
 *         return TypeCheckMethod_deserialize(<TypeCheckMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_CoercerMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1277
 *     elif _dispatch == 1:
 *         return ValidatorMethod_deserialize(<ValidatorMethod>self, data)
 *     elif _dispatch == 2:             # <<<<<<<<<<<<<<
 *         return CoercerMethod_deserialize(<CoercerMethod>self, data)
 *     elif _dispatch == 3:
 */
    break;
    case 3:

    /* "apischema/deserialization/methods.pyx":1280
 *         return CoercerMethod_deserialize(<CoercerMethod>self, data)
 *     elif _dispatch == 3:
 *         return TypeCheckMethod_deserialize(<TypeCheckMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 4:
 *         return AnyMethod_deserialize(<AnyMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_TypeCheckMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1279
 *     elif _dispatch == 2:
 *         return CoercerMethod_deserialize(<CoercerMethod>self, data)
 *     elif _dispatch == 3:             # <<<<<<<<<<<<<<
 *         return TypeCheckMethod_deserialize(<TypeCheckMethod>self, data)
 *     elif _dispatch == 4:
 */
    break;
    case 4:

    /* "apischema/deserialization/methods.pyx":1282
 *         return TypeCheckMethod_deserialize(<TypeCheckMethod>self, data)
 *     elif _dispatch == 4:
 *         return AnyMethod_deserialize(<AnyMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 5:
 *         return ListCheckOnlyMethod_deserialize(<ListCheckOnlyMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_AnyMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1281
 *     elif _dispatch == 3:
 *         return TypeCheckMethod_deserialize(<TypeCheckMethod>self, data)
 *     elif _dispatch == 4:             # <<<<<<<<<<<<<<
 *         return AnyMethod_deserialize(<AnyMethod>self, data)
 *     elif _dispatch == 5:
 */
    break;
    case 5:

    /* "apischema/deserialization/methods.pyx":1284
 *         return AnyMethod_deserialize(<AnyMethod>self, data)
 *     elif _dispatch == 5:
 *         return ListCheckOnlyMethod_deserialize(<ListCheckOnlyMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 6:
 *         return ListMethod_deserialize(<ListMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ListCheckOnlyMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1283
 *     elif _dispatch == 4:
 *         return AnyMethod_deserialize(<AnyMethod>self, data)
 *     elif _dispatch == 5:             # <<<<<<<<<<<<<<
 *         return ListCheckOnlyMethod_deserialize(<ListCheckOnlyMethod>self, data)
 *     elif _dispatch == 6:
 */
    break;
    case 6:

    /* "apischema/deserialization/methods.pyx":1286
 *         return ListCheckOnlyMethod_deserialize(<ListCheckOnlyMethod>self, data)
 *     elif _dispatch == 6:
 *         return ListMethod_deserialize(<ListMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 7:
 *         return SetMethod_deserialize(<SetMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ListMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1285
 *     elif _dispatch == 5:
 *         return ListCheckOnlyMethod_deserialize(<ListCheckOnlyMethod>self, data)
 *     elif _dispatch == 6:             # <<<<<<<<<<<<<<
 *         return ListMethod_deserialize(<ListMethod>self, data)
 *     elif _dispatch == 7:
 */
    break;
    case 7:

    /* "apischema/deserialization/methods.pyx":1288
 *         return ListMethod_deserialize(<ListMethod>self, data)
 *     elif _dispatch == 7:
 *         return SetMethod_deserialize(<SetMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 8:
 *         return VariadicTupleMethod_deserialize(<VariadicTupleMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_SetMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1287
 *     elif _dispatch == 6:
 *         return ListMethod_deserialize(<ListMethod>self, data)
 *     elif _dispatch == 7:             # <<<<<<<<<<<<<<
 *         return SetMethod_deserialize(<SetMethod>self, data)
 *     elif _dispatch == 8:
 */
    break;
    case 8:

    /* "apischema/deserialization/methods.pyx":1290
 *         return SetMethod_deserialize(<SetMethod>self, data)
 *     elif _dispatch == 8:
 *         return VariadicTupleMethod_deserialize(<VariadicTupleMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 9:
 *         return LiteralMethod_deserialize(<LiteralMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_VariadicTupleMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1289
 *     elif _dispatch == 7:
 *         return SetMethod_deserialize(<SetMethod>self, data)
 *     elif _dispatch == 8:             # <<<<<<<<<<<<<<
 *         return VariadicTupleMethod_deserialize(<VariadicTupleMethod>self, data)
 *     elif _dispatch == 9:
 */
    break;
    case 9:

    /* "apischema/deserialization/methods.pyx":1292
 *         return VariadicTupleMethod_deserialize(<VariadicTupleMethod>self, data)
 *     elif _dispatch == 9:
 *         return LiteralMethod_deserialize(<LiteralMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 10:
 *         return MappingCheckOnly_deserialize(<MappingCheckOnly>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_LiteralMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1291
 *     elif _dispatch == 8:
 *         return VariadicTupleMethod_deserialize(<VariadicTupleMethod>self, data)
 *     elif _dispatch == 9:             # <<<<<<<<<<<<<<
 *         return LiteralMethod_deserialize(<LiteralMethod>self, data)
 *     elif _dispatch == 10:
 */
    break;
    case 10:

    /* "apischema/deserialization/methods.pyx":1294
 *         return LiteralMethod_deserialize(<LiteralMethod>self, data)
 *     elif _dispatch == 10:
 *         return MappingCheckOnly_deserialize(<MappingCheckOnly>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 11:
 *         return MappingMethod_deserialize(<MappingMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_MappingCheckOnly_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1293
 *     elif _dispatch == 9:
 *         return LiteralMethod_deserialize(<LiteralMethod>self, data)
 *     elif _dispatch == 10:             # <<<<<<<<<<<<<<
 *         return MappingCheckOnly_deserialize(<MappingCheckOnly>self, data)
 *     elif _dispatch == 11:
 */
    break;
    case 11:

    /* "apischema/deserialization/methods.pyx":1296
 *         return MappingCheckOnly_deserialize(<MappingCheckOnly>self, data)
 *     elif _dispatch == 11:
 *         return MappingMethod_deserialize(<MappingMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 12:
 *         return SimpleObjectMethod_deserialize(<SimpleObjectMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_MappingMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1295
 *     elif _dispatch == 10:
 *         return MappingCheckOnly_deserialize(<MappingCheckOnly>self, data)
 *     elif _dispatch == 11:             # <<<<<<<<<<<<<<
 *         return MappingMethod_deserialize(<MappingMethod>self, data)
 *     elif _dispatch == 12:
 */
    break;
    case 12:

    /* "apischema/deserialization/methods.pyx":1298
 *         return MappingMethod_deserialize(<MappingMethod>self, data)
 *     elif _dispatch == 12:
 *         return SimpleObjectMethod_deserialize(<SimpleObjectMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 13:
 *         return ObjectMethod_deserialize(<ObjectMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_SimpleObjectMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1297
 *     elif _dispatch == 11:
 *         return MappingMethod_deserialize(<MappingMethod>self, data)
 *     elif _dispatch == 12:             # <<<<<<<<<<<<<<
 *         return SimpleObjectMethod_deserialize(<SimpleObjectMethod>self, data)
 *     elif _dispatch == 13:
 */
    break;
    case 13:

    /* "apischema/deserialization/methods.pyx":1300
 *         return SimpleObjectMethod_deserialize(<SimpleObjectMethod>self, data)
 *     elif _dispatch == 13:
 *         return ObjectMethod_deserialize(<ObjectMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 14:
 *         return NoneMethod_deserialize(<NoneMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ObjectMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1299
 *     elif _dispatch == 12:
 *         return SimpleObjectMethod_deserialize(<SimpleObjectMethod>self, data)
 *     elif _dispatch == 13:             # <<<<<<<<<<<<<<
 *         return ObjectMethod_deserialize(<ObjectMethod>self, data)
 *     elif _dispatch == 14:
 */
    break;
    case 14:

    /* "apischema/deserialization/methods.pyx":1302
 *         return ObjectMethod_deserialize(<ObjectMethod>self, data)
 *     elif _dispatch == 14:
 *         return NoneMethod_deserialize(<NoneMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 15:
 *         return IntMethod_deserialize(<IntMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_NoneMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1301
 *     elif _dispatch == 13:
 *         return ObjectMethod_deserialize(<ObjectMethod>self, data)
 *     elif _dispatch == 14:             # <<<<<<<<<<<<<<
 *         return NoneMethod_deserialize(<NoneMethod>self, data)
 *     elif _dispatch == 15:
 */
    break;
    case 15:

    /* "apischema/deserialization/methods.pyx":1304
 *         return NoneMethod_deserialize(<NoneMethod>self, data)
 *     elif _dispatch == 15:
 *         return IntMethod_deserialize(<IntMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 16:
 *         return ConstrainedIntMethod_deserialize(<ConstrainedIntMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_IntMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1303
 *     elif _dispatch == 14:
 *         return NoneMethod_deserialize(<NoneMethod>self, data)
 *     elif _dispatch == 15:             # <<<<<<<<<<<<<<
 *         return IntMethod_deserialize(<IntMethod>self, data)
 *     elif _dispatch == 16:
 */
    break;
    case 16:

    /* "apischema/deserialization/methods.pyx":1306
 *         return IntMethod_deserialize(<IntMethod>self, data)
 *     elif _dispatch == 16:
 *         return ConstrainedIntMethod_deserialize(<ConstrainedIntMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 17:
 *         return FloatMethod_deserialize(<FloatMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedIntMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1305
 *     elif _dispatch == 15:
 *         return IntMethod_deserialize(<IntMethod>self, data)
 *     elif _dispatch == 16:             # <<<<<<<<<<<<<<
 *         return ConstrainedIntMethod_deserialize(<ConstrainedIntMethod>self, data)
 *     elif _dispatch == 17:
 */
    break;
    case 17:

    /* "apischema/deserialization/methods.pyx":1308
 *         return ConstrainedIntMethod_deserialize(<ConstrainedIntMethod>self, data)
 *     elif _dispatch == 17:
 *         return FloatMethod_deserialize(<FloatMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 18:
 *         return ConstrainedFloatMethod_deserialize(<ConstrainedFloatMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_FloatMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1307
 *     elif _dispatch == 16:
 *         return ConstrainedIntMethod_deserialize(<ConstrainedIntMethod>self, data)
 *     elif _dispatch == 17:             # <<<<<<<<<<<<<<
 *         return FloatMethod_deserialize(<FloatMethod>self, data)
 *     elif _dispatch == 18:
 */
    break;
    case 18:

    /* "apischema/deserialization/methods.pyx":1310
 *         return FloatMethod_deserialize(<FloatMethod>self, data)
 *     elif _dispatch == 18:
 *         return ConstrainedFloatMethod_deserialize(<ConstrainedFloatMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 19:
 *         return StrMethod_deserialize(<StrMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedFloatMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1309
 *     elif _dispatch == 17:
 *         return FloatMethod_deserialize(<FloatMethod>self, data)
 *     elif _dispatch == 18:             # <<<<<<<<<<<<<<
 *         return ConstrainedFloatMethod_deserialize(<ConstrainedFloatMethod>self, data)
 *     elif _dispatch == 19:
 */
    break;
    case 19:

    /* "apischema/deserialization/methods.pyx":1312
 *         return ConstrainedFloatMethod_deserialize(<ConstrainedFloatMethod>self, data)
 *     elif _dispatch == 19:
 *         return StrMethod_deserialize(<StrMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 20:
 *         return ConstrainedStrMethod_deserialize(<ConstrainedStrMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_StrMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1311
 *     elif _dispatch == 18:
 *         return ConstrainedFloatMethod_deserialize(<ConstrainedFloatMethod>self, data)
 *     elif _dispatch == 19:             # <<<<<<<<<<<<<<
 *         return StrMethod_deserialize(<StrMethod>self, data)
 *     elif _dispatch == 20:
 */
    break;
    case 20:

    /* "apischema/deserialization/methods.pyx":1314
 *         return StrMethod_deserialize(<StrMethod>self, data)
 *     elif _dispatch == 20:
 *         return ConstrainedStrMethod_deserialize(<ConstrainedStrMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 21:
 *         return BoolMethod_deserialize(<BoolMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConstrainedStrMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1313
 *     elif _dispatch == 19:
 *         return StrMethod_deserialize(<StrMethod>self, data)
 *     elif _dispatch == 20:             # <<<<<<<<<<<<<<
 *         return ConstrainedStrMethod_deserialize(<ConstrainedStrMethod>self, data)
 *     elif _dispatch == 21:
 */
    break;
    case 21:

    /* "apischema/deserialization/methods.pyx":1316
 *         return ConstrainedStrMethod_deserialize(<ConstrainedStrMethod>self, data)
 *     elif _dispatch == 21:
 *         return BoolMethod_deserialize(<BoolMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 22:
 *         return SubprimitiveMethod_deserialize(<SubprimitiveMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_BoolMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1315
 *     elif _dispatch == 20:
 *         return ConstrainedStrMethod_deserialize(<ConstrainedStrMethod>self, data)
 *     elif _dispatch == 21:             # <<<<<<<<<<<<<<
 *         return BoolMethod_deserialize(<BoolMethod>self, data)
 *     elif _dispatch == 22:
 */
    break;
    case 22:

    /* "apischema/deserialization/methods.pyx":1318
 *         return BoolMethod_deserialize(<BoolMethod>self, data)
 *     elif _dispatch == 22:
 *         return SubprimitiveMethod_deserialize(<SubprimitiveMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 23:
 *         return TupleMethod_deserialize(<TupleMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_SubprimitiveMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1317
 *     elif _dispatch == 21:
 *         return BoolMethod_deserialize(<BoolMethod>self, data)
 *     elif _dispatch == 22:             # <<<<<<<<<<<<<<
 *         return SubprimitiveMethod_deserialize(<SubprimitiveMethod>self, data)
 *     elif _dispatch == 23:
 */
    break;
    case 23:

    /* "apischema/deserialization/methods.pyx":1320
 *         return SubprimitiveMethod_deserialize(<SubprimitiveMethod>self, data)
 *     elif _dispatch == 23:
 *         return TupleMethod_deserialize(<TupleMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 24:
 *         return OptionalMethod_deserialize(<OptionalMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_TupleMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1319
 *     elif _dispatch == 22:
 *         return SubprimitiveMethod_deserialize(<SubprimitiveMethod>self, data)
 *     elif _dispatch == 23:             # <<<<<<<<<<<<<<
 *         return TupleMethod_deserialize(<TupleMethod>self, data)
 *     elif _dispatch == 24:
 */
    break;
    case 24:

    /* "apischema/deserialization/methods.pyx":1322
 *         return TupleMethod_deserialize(<TupleMethod>self, data)
 *     elif _dispatch == 24:
 *         return OptionalMethod_deserialize(<OptionalMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 25:
 *         return UnionByTypeMethod_deserialize(<UnionByTypeMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_OptionalMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1321
 *     elif _dispatch == 23:
 *         return TupleMethod_deserialize(<TupleMethod>self, data)
 *     elif _dispatch == 24:             # <<<<<<<<<<<<<<
 *         return OptionalMethod_deserialize(<OptionalMethod>self, data)
 *     elif _dispatch == 25:
 */
    break;
    case 25:

    /* "apischema/deserialization/methods.pyx":1324
 *         return OptionalMethod_deserialize(<OptionalMethod>self, data)
 *     elif _dispatch == 25:
 *         return UnionByTypeMethod_deserialize(<UnionByTypeMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 26:
 *         return UnionMethod_deserialize(<UnionMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1323
 *     elif _dispatch == 24:
 *         return OptionalMethod_deserialize(<OptionalMethod>self, data)
 *     elif _dispatch == 25:             # <<<<<<<<<<<<<<
 *         return UnionByTypeMethod_deserialize(<UnionByTypeMethod>self, data)
 *     elif _dispatch == 26:
 */
    break;
    case 26:

    /* "apischema/deserialization/methods.pyx":1326
 *         return UnionByTypeMethod_deserialize(<UnionByTypeMethod>self, data)
 *     elif _dispatch == 26:
 *         return UnionMethod_deserialize(<UnionMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 27:
 *         return ConversionMethod_deserialize(<ConversionMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_UnionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1325
 *     elif _dispatch == 25:
 *         return UnionByTypeMethod_deserialize(<UnionByTypeMethod>self, data)
 *     elif _dispatch == 26:             # <<<<<<<<<<<<<<
 *         return UnionMethod_deserialize(<UnionMethod>self, data)
 *     elif _dispatch == 27:
 */
    break;
    case 27:

    /* "apischema/deserialization/methods.pyx":1328
 *         return UnionMethod_deserialize(<UnionMethod>self, data)
 *     elif _dispatch == 27:
 *         return ConversionMethod_deserialize(<ConversionMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 28:
 *         return ConversionWithValueErrorMethod_deserialize(<ConversionWithValueErrorMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConversionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1327
 *     elif _dispatch == 26:
 *         return UnionMethod_deserialize(<UnionMethod>self, data)
 *     elif _dispatch == 27:             # <<<<<<<<<<<<<<
 *         return ConversionMethod_deserialize(<ConversionMethod>self, data)
 *     elif _dispatch == 28:
 */
    break;
    case 28:

    /* "apischema/deserialization/methods.pyx":1330
 *         return ConversionMethod_deserialize(<ConversionMethod>self, data)
 *     elif _dispatch == 28:
 *         return ConversionWithValueErrorMethod_deserialize(<ConversionWithValueErrorMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 29:
 *         return ConversionUnionMethod_deserialize(<ConversionUnionMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1329
 *     elif _dispatch == 27:
 *         return ConversionMethod_deserialize(<ConversionMethod>self, data)
 *     elif _dispatch == 28:             # <<<<<<<<<<<<<<
 *         return ConversionWithValueErrorMethod_deserialize(<ConversionWithValueErrorMethod>self, data)
 *     elif _dispatch == 29:
 */
    break;
    case 29:

    /* "apischema/deserialization/methods.pyx":1332
 *         return ConversionWithValueErrorMethod_deserialize(<ConversionWithValueErrorMethod>self, data)
 *     elif _dispatch == 29:
 *         return ConversionUnionMethod_deserialize(<ConversionUnionMethod>self, data)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 30:
 *         return DiscriminatorMethod_deserialize(<DiscriminatorMethod>self, data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_ConversionUnionMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1331
 *     elif _dispatch == 28:
 *         return ConversionWithValueErrorMethod_deserialize(<ConversionWithValueErrorMethod>self, data)
 *     elif _dispatch == 29:             # <<<<<<<<<<<<<<
 *         return ConversionUnionMethod_deserialize(<ConversionUnionMethod>self, data)
 *     elif _dispatch == 30:
 */
    break;
    case 30:

    /* "apischema/deserialization/methods.pyx":1334
 *         return ConversionUnionMethod_deserialize(<ConversionUnionMethod>self, data)
 *     elif _dispatch == 30:
 *         return DiscriminatorMethod_deserialize(<DiscriminatorMethod>self, data)             # <<<<<<<<<<<<<<
 * 
 * cdef inline Constructor_construct(Constructor self, dict fields):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_DiscriminatorMethod_deserialize(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v_self), __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1333
 *     elif _dispatch == 29:
 *         return ConversionUnionMethod_deserialize(<ConversionUnionMethod>self, data)
 *     elif _dispatch == 30:             # <<<<<<<<<<<<<<
 *         return DiscriminatorMethod_deserialize(<DiscriminatorMethod>self, data)
 * 
 */
    break;
    default: break;
  }

  /* "apischema/deserialization/methods.pyx":1271
 *         return MaxPropertiesConstraint_validate(<MaxPropertiesConstraint>self, data)
 * 
 * cdef inline DeserializationMethod_deserialize(DeserializationMethod self, object data):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.DeserializationMethod_deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "apischema/deserialization/methods.pyx":1336
 *         return DiscriminatorMethod_deserialize(<DiscriminatorMethod>self, data)
 * 
 * cdef inline Constructor_construct(Constructor self, dict fields):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

static CYTHON_INLINE PyObject *__pyx_f_9apischema_15deserialization_7methods_Constructor_construct(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v_self, PyObject *__pyx_v_fields) {
  int __pyx_v__dispatch;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Constructor_construct", 0);

  /* "apischema/deserialization/methods.pyx":1337
 * 
 * cdef inline Constructor_construct(Constructor self, dict fields):
 *     cdef int _dispatch = self._dispatch             # <<<<<<<<<<<<<<
 *     if _dispatch == 0:
 *         return NoConstructor_construct(<NoConstructor>self, fields)
 */
  __pyx_t_1 = __pyx_v_self->_dispatch;
  __pyx_v__dispatch = __pyx_t_1;

  /* "apischema/deserialization/methods.pyx":1338
 * cdef inline Constructor_construct(Constructor self, dict fields):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return NoConstructor_construct(<NoConstructor>self, fields)
 *     elif _dispatch == 1:
 */
  switch (__pyx_v__dispatch) {
    case 0:

    /* "apischema/deserialization/methods.pyx":1339
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 *         return NoConstructor_construct(<NoConstructor>self, fields)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 1:
 *         return RawConstructor_construct(<RawConstructor>self, fields)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_NoConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v_self), __pyx_v_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1338
 * cdef inline Constructor_construct(Constructor self, dict fields):
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:             # <<<<<<<<<<<<<<
 *         return NoConstructor_construct(<NoConstructor>self, fields)
 *     elif _dispatch == 1:
 */
    break;
    case 1:

    /* "apischema/deserialization/methods.pyx":1341
 *         return NoConstructor_construct(<NoConstructor>self, fields)
 *     elif _dispatch == 1:
 *         return RawConstructor_construct(<RawConstructor>self, fields)             # <<<<<<<<<<<<<<
 *     elif _dispatch == 2:
 *         return FieldsConstructor_construct(<FieldsConstructor>self, fields)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_RawConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v_self), __pyx_v_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1340
 *     if _dispatch == 0:
 *         return NoConstructor_construct(<NoConstructor>self, fields)
 *     elif _dispatch == 1:             # <<<<<<<<<<<<<<
 *         return RawConstructor_construct(<RawConstructor>self, fields)
 *     elif _dispatch == 2:
 */
    break;
    case 2:

    /* "apischema/deserialization/methods.pyx":1343
 *         return RawConstructor_construct(<RawConstructor>self, fields)
 *     elif _dispatch == 2:
 *         return FieldsConstructor_construct(<FieldsConstructor>self, fields)             # <<<<<<<<<<<<<<
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_9apischema_15deserialization_7methods_FieldsConstructor_construct(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v_self), __pyx_v_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "apischema/deserialization/methods.pyx":1342
 *     elif _dispatch == 1:
 *         return RawConstructor_construct(<RawConstructor>self, fields)
 *     elif _dispatch == 2:             # <<<<<<<<<<<<<<
 *         return FieldsConstructor_construct(<FieldsConstructor>self, fields)
 * 
 */
    break;
    default: break;
  }

  /* "apischema/deserialization/methods.pyx":1336
 *         return DiscriminatorMethod_deserialize(<DiscriminatorMethod>self, data)
 * 
 * cdef inline Constructor_construct(Constructor self, dict fields):             # <<<<<<<<<<<<<<
 *     cdef int _dispatch = self._dispatch
 *     if _dispatch == 0:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("apischema.deserialization.methods.Constructor_construct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_Constraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13__pyx_unpickle_Constraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_13__pyx_unpickle_Constraint = {"__pyx_unpickle_Constraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_13__pyx_unpickle_Constraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_13__pyx_unpickle_Constraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Constraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_12__pyx_unpickle_Constraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_12__pyx_unpickle_Constraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x527db43:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x527db43) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x527db43:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 *     __pyx_result = Constraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x527db43:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = Constraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x52, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x527db43:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 *     __pyx_result = Constraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_Constraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 *     __pyx_result = Constraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = Constraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x527db43 = (_dispatch, error))" % __pyx_checksum)
 *     __pyx_result = Constraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Constraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->error);
  __Pyx_DECREF(__pyx_v___pyx_result->error);
  __pyx_v___pyx_result->error = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MinimumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15__pyx_unpickle_MinimumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_15__pyx_unpickle_MinimumConstraint = {"__pyx_unpickle_MinimumConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_15__pyx_unpickle_MinimumConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_15__pyx_unpickle_MinimumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinimumConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinimumConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinimumConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MinimumConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinimumConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinimumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_14__pyx_unpickle_MinimumConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_14__pyx_unpickle_MinimumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinimumConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfe8a25a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xfe8a25a) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfe8a25a:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xfe8a25a:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xfe, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfe8a25a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MinimumConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinimumConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfe8a25a = (_dispatch, error, minimum))" % __pyx_checksum)
 *     __pyx_result = MinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinimumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinimumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinimumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinimumConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->minimum = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinimumConstraint__set_state(<MinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinimumConstraint__set_state(MinimumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.minimum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinimumConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17__pyx_unpickle_MaximumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_17__pyx_unpickle_MaximumConstraint = {"__pyx_unpickle_MaximumConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_17__pyx_unpickle_MaximumConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_17__pyx_unpickle_MaximumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaximumConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaximumConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaximumConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MaximumConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaximumConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaximumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_16__pyx_unpickle_MaximumConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_16__pyx_unpickle_MaximumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaximumConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x604efde:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x604efde) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x604efde:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x604efde:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x60, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x604efde:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MaximumConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaximumConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x604efde = (_dispatch, error, maximum))" % __pyx_checksum)
 *     __pyx_result = MaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaximumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaximumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaximumConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->maximum = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaximumConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ExclusiveMinimumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19__pyx_unpickle_ExclusiveMinimumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_19__pyx_unpickle_ExclusiveMinimumConstraint = {"__pyx_unpickle_ExclusiveMinimumConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_19__pyx_unpickle_ExclusiveMinimumConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_19__pyx_unpickle_ExclusiveMinimumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMinimumConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMinimumConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMinimumConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ExclusiveMinimumConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMinimumConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMinimumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_18__pyx_unpickle_ExclusiveMinimumConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_18__pyx_unpickle_ExclusiveMinimumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMinimumConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x694fdb2:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x694fdb2) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x694fdb2:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x694fdb2:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x69, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x694fdb2:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMinimumConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x694fdb2 = (_dispatch, error, exc_min))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMinimumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ExclusiveMinimumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMinimumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMinimumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMinimumConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->exc_min = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ExclusiveMinimumConstraint__set_state(<ExclusiveMinimumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMinimumConstraint__set_state(ExclusiveMinimumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_min = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMinimumConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ExclusiveMaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21__pyx_unpickle_ExclusiveMaximumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_21__pyx_unpickle_ExclusiveMaximumConstraint = {"__pyx_unpickle_ExclusiveMaximumConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_21__pyx_unpickle_ExclusiveMaximumConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_21__pyx_unpickle_ExclusiveMaximumConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMaximumConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMaximumConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMaximumConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ExclusiveMaximumConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ExclusiveMaximumConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMaximumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_20__pyx_unpickle_ExclusiveMaximumConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_20__pyx_unpickle_ExclusiveMaximumConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMaximumConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7a92bc0:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x7a92bc0) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7a92bc0:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x7a92bc0:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x7a, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7a92bc0:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMaximumConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7a92bc0 = (_dispatch, error, exc_max))" % __pyx_checksum)
 *     __pyx_result = ExclusiveMaximumConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ExclusiveMaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMaximumConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ExclusiveMaximumConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ExclusiveMaximumConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->exc_max = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ExclusiveMaximumConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MultipleOfConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23__pyx_unpickle_MultipleOfConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_23__pyx_unpickle_MultipleOfConstraint = {"__pyx_unpickle_MultipleOfConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_23__pyx_unpickle_MultipleOfConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_23__pyx_unpickle_MultipleOfConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MultipleOfConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MultipleOfConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MultipleOfConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MultipleOfConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MultipleOfConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MultipleOfConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_22__pyx_unpickle_MultipleOfConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_22__pyx_unpickle_MultipleOfConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MultipleOfConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x3034e41:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x3034e41) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x3034e41:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x3034e41:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x30, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x3034e41:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MultipleOfConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MultipleOfConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x3034e41 = (_dispatch, error, mult_of))" % __pyx_checksum)
 *     __pyx_result = MultipleOfConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MultipleOfConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MultipleOfConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MultipleOfConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MultipleOfConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->mult_of = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MultipleOfConstraint__set_state(<MultipleOfConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MultipleOfConstraint__set_state(MultipleOfConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.mult_of = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MultipleOfConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MinLengthConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_25__pyx_unpickle_MinLengthConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_25__pyx_unpickle_MinLengthConstraint = {"__pyx_unpickle_MinLengthConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_25__pyx_unpickle_MinLengthConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_25__pyx_unpickle_MinLengthConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinLengthConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinLengthConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinLengthConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MinLengthConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinLengthConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinLengthConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_24__pyx_unpickle_MinLengthConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_24__pyx_unpickle_MinLengthConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinLengthConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5305afa:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x5305afa) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5305afa:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x5305afa:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x53, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5305afa:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MinLengthConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinLengthConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5305afa = (_dispatch, error, min_len))" % __pyx_checksum)
 *     __pyx_result = MinLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinLengthConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinLengthConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinLengthConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinLengthConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->min_len = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinLengthConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MaxLengthConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_27__pyx_unpickle_MaxLengthConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_27__pyx_unpickle_MaxLengthConstraint = {"__pyx_unpickle_MaxLengthConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_27__pyx_unpickle_MaxLengthConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_27__pyx_unpickle_MaxLengthConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxLengthConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxLengthConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxLengthConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MaxLengthConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxLengthConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxLengthConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_26__pyx_unpickle_MaxLengthConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_26__pyx_unpickle_MaxLengthConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxLengthConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x86ba199:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x86ba199) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x86ba199:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x86ba199:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x86, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x86ba199:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MaxLengthConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxLengthConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x86ba199 = (_dispatch, error, max_len))" % __pyx_checksum)
 *     __pyx_result = MaxLengthConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaxLengthConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxLengthConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxLengthConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxLengthConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->max_len = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaxLengthConstraint__set_state(<MaxLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxLengthConstraint__set_state(MaxLengthConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxLengthConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_PatternConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_29__pyx_unpickle_PatternConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_29__pyx_unpickle_PatternConstraint = {"__pyx_unpickle_PatternConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_29__pyx_unpickle_PatternConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_29__pyx_unpickle_PatternConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_PatternConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_28__pyx_unpickle_PatternConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_28__pyx_unpickle_PatternConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x83f5779:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x83f5779) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x83f5779:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x83f5779:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x83, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x83f5779:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_PatternConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x83f5779 = (_dispatch, error, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_PatternConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->pattern);
  __Pyx_DECREF(__pyx_v___pyx_result->pattern);
  __pyx_v___pyx_result->pattern = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MinItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_31__pyx_unpickle_MinItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_31__pyx_unpickle_MinItemsConstraint = {"__pyx_unpickle_MinItemsConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_31__pyx_unpickle_MinItemsConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_31__pyx_unpickle_MinItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinItemsConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinItemsConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinItemsConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MinItemsConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinItemsConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_30__pyx_unpickle_MinItemsConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_30__pyx_unpickle_MinItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinItemsConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x97ef1b1:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x97ef1b1) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x97ef1b1:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x97ef1b1:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x97, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x97ef1b1:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MinItemsConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinItemsConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x97ef1b1 = (_dispatch, error, min_items))" % __pyx_checksum)
 *     __pyx_result = MinItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinItemsConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->min_items = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinItemsConstraint__set_state(<MinItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinItemsConstraint__set_state(MinItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinItemsConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MaxItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_33__pyx_unpickle_MaxItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_33__pyx_unpickle_MaxItemsConstraint = {"__pyx_unpickle_MaxItemsConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_33__pyx_unpickle_MaxItemsConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_33__pyx_unpickle_MaxItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxItemsConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxItemsConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxItemsConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MaxItemsConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxItemsConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_32__pyx_unpickle_MaxItemsConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_32__pyx_unpickle_MaxItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxItemsConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1da8bbc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x1da8bbc) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1da8bbc:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x1da8bbc:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x1d, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1da8bbc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MaxItemsConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxItemsConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1da8bbc = (_dispatch, error, max_items))" % __pyx_checksum)
 *     __pyx_result = MaxItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaxItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxItemsConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->max_items = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxItemsConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_UniqueItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_35__pyx_unpickle_UniqueItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_35__pyx_unpickle_UniqueItemsConstraint = {"__pyx_unpickle_UniqueItemsConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_35__pyx_unpickle_UniqueItemsConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_35__pyx_unpickle_UniqueItemsConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_UniqueItemsConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UniqueItemsConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UniqueItemsConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_UniqueItemsConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UniqueItemsConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UniqueItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_34__pyx_unpickle_UniqueItemsConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_34__pyx_unpickle_UniqueItemsConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UniqueItemsConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x0a0bd34:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x0a0bd34) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x0a0bd34:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x0a0bd34:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x0a, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x0a0bd34:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_UniqueItemsConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UniqueItemsConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x0a0bd34 = (_dispatch, error, unique))" % __pyx_checksum)
 *     __pyx_result = UniqueItemsConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_UniqueItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UniqueItemsConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UniqueItemsConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UniqueItemsConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->unique = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_UniqueItemsConstraint__set_state(<UniqueItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UniqueItemsConstraint__set_state(UniqueItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.unique = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UniqueItemsConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MinPropertiesConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_37__pyx_unpickle_MinPropertiesConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_37__pyx_unpickle_MinPropertiesConstraint = {"__pyx_unpickle_MinPropertiesConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_37__pyx_unpickle_MinPropertiesConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_37__pyx_unpickle_MinPropertiesConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinPropertiesConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinPropertiesConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinPropertiesConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MinPropertiesConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MinPropertiesConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinPropertiesConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_36__pyx_unpickle_MinPropertiesConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_36__pyx_unpickle_MinPropertiesConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinPropertiesConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd19b6c9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd19b6c9) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd19b6c9:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd19b6c9:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd19b6c9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MinPropertiesConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinPropertiesConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd19b6c9 = (_dispatch, error, min_properties))" % __pyx_checksum)
 *     __pyx_result = MinPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinPropertiesConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinPropertiesConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MinPropertiesConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MinPropertiesConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->min_properties = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MinPropertiesConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MaxPropertiesConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_39__pyx_unpickle_MaxPropertiesConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_39__pyx_unpickle_MaxPropertiesConstraint = {"__pyx_unpickle_MaxPropertiesConstraint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_39__pyx_unpickle_MaxPropertiesConstraint, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_39__pyx_unpickle_MaxPropertiesConstraint(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxPropertiesConstraint (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxPropertiesConstraint", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxPropertiesConstraint", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MaxPropertiesConstraint") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MaxPropertiesConstraint", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxPropertiesConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_38__pyx_unpickle_MaxPropertiesConstraint(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_38__pyx_unpickle_MaxPropertiesConstraint(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxPropertiesConstraint", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xefe7471:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xefe7471) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xefe7471:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xefe7471:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xef, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xefe7471:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MaxPropertiesConstraint), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxPropertiesConstraint__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xefe7471 = (_dispatch, error, max_properties))" % __pyx_checksum)
 *     __pyx_result = MaxPropertiesConstraint.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaxPropertiesConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxPropertiesConstraint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MaxPropertiesConstraint__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MaxPropertiesConstraint__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.error);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.error);
  __pyx_v___pyx_result->__pyx_base.error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->max_properties = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 3) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaxPropertiesConstraint__set_state(<MaxPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxPropertiesConstraint__set_state(MaxPropertiesConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MaxPropertiesConstraint__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_DeserializationMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_41__pyx_unpickle_DeserializationMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_41__pyx_unpickle_DeserializationMethod = {"__pyx_unpickle_DeserializationMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_41__pyx_unpickle_DeserializationMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_41__pyx_unpickle_DeserializationMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_DeserializationMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DeserializationMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DeserializationMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_DeserializationMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DeserializationMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DeserializationMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_40__pyx_unpickle_DeserializationMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_40__pyx_unpickle_DeserializationMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DeserializationMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DeserializationMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = DeserializationMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DeserializationMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DeserializationMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DeserializationMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DeserializationMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DeserializationMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_RecMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_43__pyx_unpickle_RecMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_43__pyx_unpickle_RecMethod = {"__pyx_unpickle_RecMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_43__pyx_unpickle_RecMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_43__pyx_unpickle_RecMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_RecMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RecMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RecMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RecMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RecMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RecMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_42__pyx_unpickle_RecMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_42__pyx_unpickle_RecMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_RecMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x64c25a2:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x64c25a2) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x64c25a2:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 *     __pyx_result = RecMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x64c25a2:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = RecMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x64, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x64c25a2:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 *     __pyx_result = RecMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_RecMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 *     __pyx_result = RecMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = RecMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RecMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x64c25a2 = (_dispatch, lazy, method))" % __pyx_checksum)
 *     __pyx_result = RecMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_RecMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RecMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RecMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_RecMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->lazy);
  __Pyx_DECREF(__pyx_v___pyx_result->lazy);
  __pyx_v___pyx_result->lazy = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(__pyx_v___pyx_result->method);
  __pyx_v___pyx_result->method = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_RecMethod__set_state(<RecMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_RecMethod__set_state(RecMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.lazy = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RecMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ValidatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_45__pyx_unpickle_ValidatorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_45__pyx_unpickle_ValidatorMethod = {"__pyx_unpickle_ValidatorMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_45__pyx_unpickle_ValidatorMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_45__pyx_unpickle_ValidatorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ValidatorMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ValidatorMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ValidatorMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ValidatorMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ValidatorMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ValidatorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_44__pyx_unpickle_ValidatorMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_44__pyx_unpickle_ValidatorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ValidatorMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb0f2d60:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb0f2d60) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb0f2d60:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xb0f2d60:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb0f2d60:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ValidatorMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ValidatorMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb0f2d60 = (_dispatch, aliaser, method, validators))" % __pyx_checksum)
 *     __pyx_result = ValidatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ValidatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ValidatorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ValidatorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ValidatorMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->aliaser);
  __Pyx_DECREF(__pyx_v___pyx_result->aliaser);
  __pyx_v___pyx_result->aliaser = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->validators);
  __Pyx_DECREF(__pyx_v___pyx_result->validators);
  __pyx_v___pyx_result->validators = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 4) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ValidatorMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_CoercerMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_47__pyx_unpickle_CoercerMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_47__pyx_unpickle_CoercerMethod = {"__pyx_unpickle_CoercerMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_47__pyx_unpickle_CoercerMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_47__pyx_unpickle_CoercerMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_CoercerMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CoercerMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CoercerMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_CoercerMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CoercerMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_CoercerMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_46__pyx_unpickle_CoercerMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_46__pyx_unpickle_CoercerMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_CoercerMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf94bd36:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xf94bd36) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf94bd36:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xf94bd36:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xf9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf94bd36:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_CoercerMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_CoercerMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf94bd36 = (_dispatch, cls, coercer, method))" % __pyx_checksum)
 *     __pyx_result = CoercerMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_CoercerMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_CoercerMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_CoercerMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_CoercerMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->cls);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->cls));
  __pyx_v___pyx_result->cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->coercer);
  __Pyx_DECREF(__pyx_v___pyx_result->coercer);
  __pyx_v___pyx_result->coercer = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 4) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_CoercerMethod__set_state(<CoercerMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_CoercerMethod__set_state(CoercerMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.coercer = __pyx_state[2]; __pyx_result.method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_CoercerMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_TypeCheckMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_49__pyx_unpickle_TypeCheckMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_49__pyx_unpickle_TypeCheckMethod = {"__pyx_unpickle_TypeCheckMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_49__pyx_unpickle_TypeCheckMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_49__pyx_unpickle_TypeCheckMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_TypeCheckMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TypeCheckMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TypeCheckMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_TypeCheckMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TypeCheckMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TypeCheckMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_48__pyx_unpickle_TypeCheckMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_48__pyx_unpickle_TypeCheckMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_TypeCheckMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x29257f8:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x29257f8) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x29257f8:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x29257f8:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x29, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x29257f8:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_TypeCheckMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TypeCheckMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x29257f8 = (_dispatch, expected, fallback))" % __pyx_checksum)
 *     __pyx_result = TypeCheckMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_TypeCheckMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TypeCheckMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TypeCheckMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_TypeCheckMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->expected);
  __Pyx_DECREF(__pyx_v___pyx_result->expected);
  __pyx_v___pyx_result->expected = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->fallback);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->fallback));
  __pyx_v___pyx_result->fallback = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TypeCheckMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_AnyMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_51__pyx_unpickle_AnyMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_51__pyx_unpickle_AnyMethod = {"__pyx_unpickle_AnyMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_51__pyx_unpickle_AnyMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_51__pyx_unpickle_AnyMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_AnyMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AnyMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AnyMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_AnyMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AnyMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AnyMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_50__pyx_unpickle_AnyMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_50__pyx_unpickle_AnyMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AnyMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x5539d84) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = AnyMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = AnyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x55, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = AnyMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_AnyMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = AnyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = AnyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AnyMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = AnyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_AnyMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AnyMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AnyMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AnyMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_AnyMethod__set_state(<AnyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AnyMethod__set_state(AnyMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AnyMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ListCheckOnlyMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_53__pyx_unpickle_ListCheckOnlyMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_53__pyx_unpickle_ListCheckOnlyMethod = {"__pyx_unpickle_ListCheckOnlyMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_53__pyx_unpickle_ListCheckOnlyMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_53__pyx_unpickle_ListCheckOnlyMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListCheckOnlyMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListCheckOnlyMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListCheckOnlyMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ListCheckOnlyMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListCheckOnlyMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListCheckOnlyMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_52__pyx_unpickle_ListCheckOnlyMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_52__pyx_unpickle_ListCheckOnlyMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListCheckOnlyMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xe655191) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xe6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ListCheckOnlyMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListCheckOnlyMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListCheckOnlyMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ListCheckOnlyMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListCheckOnlyMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListCheckOnlyMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListCheckOnlyMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListCheckOnlyMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ListMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_55__pyx_unpickle_ListMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_55__pyx_unpickle_ListMethod = {"__pyx_unpickle_ListMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_55__pyx_unpickle_ListMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_55__pyx_unpickle_ListMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ListMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ListMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_54__pyx_unpickle_ListMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_54__pyx_unpickle_ListMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xe655191) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ListMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xe6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ListMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ListMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = ListMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ListMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ListMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ListMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ListMethod__set_state(<ListMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ListMethod__set_state(ListMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ListMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_SetMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_57__pyx_unpickle_SetMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_57__pyx_unpickle_SetMethod = {"__pyx_unpickle_SetMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_57__pyx_unpickle_SetMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_57__pyx_unpickle_SetMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_SetMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SetMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SetMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SetMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SetMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SetMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_56__pyx_unpickle_SetMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_56__pyx_unpickle_SetMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SetMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xe655191) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = SetMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xe655191:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = SetMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xe6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe655191:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = SetMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_SetMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = SetMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = SetMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SetMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe655191 = (_dispatch, constraints, value_method))" % __pyx_checksum)
 *     __pyx_result = SetMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_SetMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SetMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SetMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SetMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SetMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_VariadicTupleMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_59__pyx_unpickle_VariadicTupleMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_59__pyx_unpickle_VariadicTupleMethod = {"__pyx_unpickle_VariadicTupleMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_59__pyx_unpickle_VariadicTupleMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_59__pyx_unpickle_VariadicTupleMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_VariadicTupleMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VariadicTupleMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VariadicTupleMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_VariadicTupleMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VariadicTupleMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_VariadicTupleMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_58__pyx_unpickle_VariadicTupleMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_58__pyx_unpickle_VariadicTupleMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_VariadicTupleMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xaafb1dc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xaafb1dc) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xaafb1dc:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xaafb1dc:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xaa, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xaafb1dc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_VariadicTupleMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_VariadicTupleMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xaafb1dc = (_dispatch, method))" % __pyx_checksum)
 *     __pyx_result = VariadicTupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_VariadicTupleMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_VariadicTupleMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_VariadicTupleMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_VariadicTupleMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_VariadicTupleMethod__set_state(<VariadicTupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_VariadicTupleMethod__set_state(VariadicTupleMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_VariadicTupleMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_LiteralMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_61__pyx_unpickle_LiteralMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_61__pyx_unpickle_LiteralMethod = {"__pyx_unpickle_LiteralMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_61__pyx_unpickle_LiteralMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_61__pyx_unpickle_LiteralMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_LiteralMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LiteralMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LiteralMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_LiteralMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LiteralMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_LiteralMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_60__pyx_unpickle_LiteralMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_60__pyx_unpickle_LiteralMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_LiteralMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7217703:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x7217703) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7217703:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x7217703:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x72, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7217703:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_LiteralMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_LiteralMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7217703 = (_dispatch, coercer, error, types, value_map))" % __pyx_checksum)
 *     __pyx_result = LiteralMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_LiteralMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_LiteralMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_LiteralMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_LiteralMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->coercer);
  __Pyx_DECREF(__pyx_v___pyx_result->coercer);
  __pyx_v___pyx_result->coercer = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->error);
  __Pyx_DECREF(__pyx_v___pyx_result->error);
  __pyx_v___pyx_result->error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->types);
  __Pyx_DECREF(__pyx_v___pyx_result->types);
  __pyx_v___pyx_result->types = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_map);
  __Pyx_DECREF(__pyx_v___pyx_result->value_map);
  __pyx_v___pyx_result->value_map = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 5) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_LiteralMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MappingCheckOnly(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_63__pyx_unpickle_MappingCheckOnly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_63__pyx_unpickle_MappingCheckOnly = {"__pyx_unpickle_MappingCheckOnly", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_63__pyx_unpickle_MappingCheckOnly, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_63__pyx_unpickle_MappingCheckOnly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingCheckOnly (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingCheckOnly", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingCheckOnly", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MappingCheckOnly") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingCheckOnly", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingCheckOnly", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_62__pyx_unpickle_MappingCheckOnly(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_62__pyx_unpickle_MappingCheckOnly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingCheckOnly", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x7264445) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x7264445:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x72_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MappingCheckOnly), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingCheckOnly__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingCheckOnly.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MappingCheckOnly(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingCheckOnly", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingCheckOnly__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingCheckOnly__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->key_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->key_method));
  __pyx_v___pyx_result->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 4) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MappingCheckOnly__set_state(<MappingCheckOnly> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingCheckOnly__set_state(MappingCheckOnly __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingCheckOnly__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_MappingMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_65__pyx_unpickle_MappingMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_65__pyx_unpickle_MappingMethod = {"__pyx_unpickle_MappingMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_65__pyx_unpickle_MappingMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_65__pyx_unpickle_MappingMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_MappingMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_MappingMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_64__pyx_unpickle_MappingMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_64__pyx_unpickle_MappingMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x7264445) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x7264445:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = MappingMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x72_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7264445:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_MappingMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = MappingMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7264445 = (_dispatch, constraints, key_method, value_method))" % __pyx_checksum)
 *     __pyx_result = MappingMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MappingMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_MappingMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_MappingMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->key_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->key_method));
  __pyx_v___pyx_result->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 4) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_MappingMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_Field(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_67__pyx_unpickle_Field(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_67__pyx_unpickle_Field = {"__pyx_unpickle_Field", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_67__pyx_unpickle_Field, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_67__pyx_unpickle_Field(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Field (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Field", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Field", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Field") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Field", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Field", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_66__pyx_unpickle_Field(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_66__pyx_unpickle_Field(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Field", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd993b5e:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd993b5e) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd993b5e:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 *     __pyx_result = Field.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd993b5e:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = Field.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd993b5e:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 *     __pyx_result = Field.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_Field), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 *     __pyx_result = Field.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = Field.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Field__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd993b5e = (alias, fall_back_on_default, method, name, required, required_by))" % __pyx_checksum)
 *     __pyx_result = Field.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Field(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Field", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Field__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Field *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Field__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[6])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->alias);
  __Pyx_DECREF(__pyx_v___pyx_result->alias);
  __pyx_v___pyx_result->alias = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->fall_back_on_default = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->required = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->required_by);
  __Pyx_DECREF(__pyx_v___pyx_result->required_by);
  __pyx_v___pyx_result->required_by = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[6])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 6) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[6])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[6])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_Field__set_state(<Field> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Field__set_state(Field __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.alias = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]; __pyx_result.required = __pyx_state[4]; __pyx_result.required_by = __pyx_state[5]
 *     if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Field__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_FlattenedField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_69__pyx_unpickle_FlattenedField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_69__pyx_unpickle_FlattenedField = {"__pyx_unpickle_FlattenedField", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_69__pyx_unpickle_FlattenedField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_69__pyx_unpickle_FlattenedField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_FlattenedField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FlattenedField", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FlattenedField", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FlattenedField") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FlattenedField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FlattenedField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_68__pyx_unpickle_FlattenedField(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_68__pyx_unpickle_FlattenedField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FlattenedField", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xcf766cb:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xcf766cb) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xcf766cb:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = FlattenedField.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xcf766cb:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = FlattenedField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xcf, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xcf766cb:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = FlattenedField.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_FlattenedField), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = FlattenedField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = FlattenedField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FlattenedField__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xcf766cb = (aliases, fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = FlattenedField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FlattenedField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FlattenedField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FlattenedField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FlattenedField__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->aliases);
  __Pyx_DECREF(__pyx_v___pyx_result->aliases);
  __pyx_v___pyx_result->aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->fall_back_on_default = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 4) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FlattenedField__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_PatternField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_71__pyx_unpickle_PatternField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_71__pyx_unpickle_PatternField = {"__pyx_unpickle_PatternField", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_71__pyx_unpickle_PatternField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_71__pyx_unpickle_PatternField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternField", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternField", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_PatternField") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PatternField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_70__pyx_unpickle_PatternField(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_70__pyx_unpickle_PatternField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternField", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb38b346:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb38b346) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb38b346:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternField.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xb38b346:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = PatternField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xb38b346:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternField.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_PatternField), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = PatternField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternField__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb38b346 = (fall_back_on_default, method, name, pattern))" % __pyx_checksum)
 *     __pyx_result = PatternField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_PatternField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_PatternField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PatternField__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->fall_back_on_default = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->pattern);
  __Pyx_DECREF(__pyx_v___pyx_result->pattern);
  __pyx_v___pyx_result->pattern = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 4) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[4])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PatternField__set_state(<PatternField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternField__set_state(PatternField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]; __pyx_result.pattern = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_PatternField__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_AdditionalField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_73__pyx_unpickle_AdditionalField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_73__pyx_unpickle_AdditionalField = {"__pyx_unpickle_AdditionalField", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_73__pyx_unpickle_AdditionalField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_73__pyx_unpickle_AdditionalField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_AdditionalField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AdditionalField", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AdditionalField", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_AdditionalField") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AdditionalField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AdditionalField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_72__pyx_unpickle_AdditionalField(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_72__pyx_unpickle_AdditionalField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AdditionalField", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x92179fc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x92179fc) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x92179fc:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = AdditionalField.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x92179fc:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = AdditionalField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x92, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x92179fc:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = AdditionalField.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_AdditionalField), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = AdditionalField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = AdditionalField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AdditionalField__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x92179fc = (fall_back_on_default, method, name))" % __pyx_checksum)
 *     __pyx_result = AdditionalField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_AdditionalField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AdditionalField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_AdditionalField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AdditionalField__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->fall_back_on_default = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 3) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_AdditionalField__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_Constructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_75__pyx_unpickle_Constructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_75__pyx_unpickle_Constructor = {"__pyx_unpickle_Constructor", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_75__pyx_unpickle_Constructor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_75__pyx_unpickle_Constructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constructor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constructor", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constructor", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Constructor") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Constructor", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_74__pyx_unpickle_Constructor(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_74__pyx_unpickle_Constructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constructor", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x686e94b) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = Constructor.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = Constructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x68, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = Constructor.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_Constructor), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = Constructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = Constructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constructor__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = Constructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Constructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_Constructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Constructor__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->cls);
  __Pyx_DECREF(__pyx_v___pyx_result->cls);
  __pyx_v___pyx_result->cls = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_Constructor__set_state(<Constructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Constructor__set_state(Constructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_Constructor__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_NoConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_77__pyx_unpickle_NoConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_77__pyx_unpickle_NoConstructor = {"__pyx_unpickle_NoConstructor", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_77__pyx_unpickle_NoConstructor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_77__pyx_unpickle_NoConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoConstructor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoConstructor", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoConstructor", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_NoConstructor") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoConstructor", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_76__pyx_unpickle_NoConstructor(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_76__pyx_unpickle_NoConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoConstructor", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x686e94b) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = NoConstructor.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = NoConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x68, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = NoConstructor.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_NoConstructor), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = NoConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = NoConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoConstructor__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = NoConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_NoConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoConstructor__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.cls);
  __pyx_v___pyx_result->__pyx_base.cls = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoConstructor__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_RawConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_79__pyx_unpickle_RawConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_79__pyx_unpickle_RawConstructor = {"__pyx_unpickle_RawConstructor", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_79__pyx_unpickle_RawConstructor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_79__pyx_unpickle_RawConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_RawConstructor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RawConstructor", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RawConstructor", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RawConstructor") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RawConstructor", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RawConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_78__pyx_unpickle_RawConstructor(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_78__pyx_unpickle_RawConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_RawConstructor", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x686e94b) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = RawConstructor.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x686e94b:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = RawConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x68, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x686e94b:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = RawConstructor.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_RawConstructor), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = RawConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = RawConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RawConstructor__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x686e94b = (_dispatch, cls))" % __pyx_checksum)
 *     __pyx_result = RawConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_RawConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RawConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_RawConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_RawConstructor__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.cls);
  __pyx_v___pyx_result->__pyx_base.cls = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_RawConstructor__set_state(<RawConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_RawConstructor__set_state(RawConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_RawConstructor__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_DefaultField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_81__pyx_unpickle_DefaultField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_81__pyx_unpickle_DefaultField = {"__pyx_unpickle_DefaultField", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_81__pyx_unpickle_DefaultField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_81__pyx_unpickle_DefaultField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_DefaultField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DefaultField", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DefaultField", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_DefaultField") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DefaultField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DefaultField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_80__pyx_unpickle_DefaultField(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_80__pyx_unpickle_DefaultField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DefaultField", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x90f00a8:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x90f00a8) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x90f00a8:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 *     __pyx_result = DefaultField.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x90f00a8:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = DefaultField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x90, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x90f00a8:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 *     __pyx_result = DefaultField.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_DefaultField), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 *     __pyx_result = DefaultField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = DefaultField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DefaultField__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x90f00a8 = (default_value, name))" % __pyx_checksum)
 *     __pyx_result = DefaultField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DefaultField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DefaultField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DefaultField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DefaultField__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->default_value);
  __Pyx_DECREF(__pyx_v___pyx_result->default_value);
  __pyx_v___pyx_result->default_value = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 2) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DefaultField__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_FactoryField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_83__pyx_unpickle_FactoryField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_83__pyx_unpickle_FactoryField = {"__pyx_unpickle_FactoryField", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_83__pyx_unpickle_FactoryField, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_83__pyx_unpickle_FactoryField(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_FactoryField (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FactoryField", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FactoryField", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FactoryField") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FactoryField", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FactoryField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_82__pyx_unpickle_FactoryField(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_82__pyx_unpickle_FactoryField(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FactoryField", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1cf0d00:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x1cf0d00) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1cf0d00:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 *     __pyx_result = FactoryField.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x1cf0d00:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = FactoryField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x1c, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x1cf0d00:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 *     __pyx_result = FactoryField.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_FactoryField), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 *     __pyx_result = FactoryField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = FactoryField.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FactoryField__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1cf0d00 = (factory, name))" % __pyx_checksum)
 *     __pyx_result = FactoryField.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FactoryField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FactoryField", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FactoryField__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FactoryField__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->factory);
  __Pyx_DECREF(__pyx_v___pyx_result->factory);
  __pyx_v___pyx_result->factory = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->name);
  __Pyx_DECREF(__pyx_v___pyx_result->name);
  __pyx_v___pyx_result->name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 2) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_FactoryField__set_state(<FactoryField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FactoryField__set_state(FactoryField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.factory = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FactoryField__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_FieldsConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_85__pyx_unpickle_FieldsConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_85__pyx_unpickle_FieldsConstructor = {"__pyx_unpickle_FieldsConstructor", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_85__pyx_unpickle_FieldsConstructor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_85__pyx_unpickle_FieldsConstructor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_FieldsConstructor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FieldsConstructor", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FieldsConstructor", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FieldsConstructor") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FieldsConstructor", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FieldsConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_84__pyx_unpickle_FieldsConstructor(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_84__pyx_unpickle_FieldsConstructor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FieldsConstructor", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xc863e14:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xc863e14) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xc863e14:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xc863e14:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xc8, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xc863e14:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_FieldsConstructor), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FieldsConstructor__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xc863e14 = (_dispatch, cls, default_fields, factory_fields, nb_fields))" % __pyx_checksum)
 *     __pyx_result = FieldsConstructor.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FieldsConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FieldsConstructor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FieldsConstructor__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  long __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FieldsConstructor__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.cls);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.cls);
  __pyx_v___pyx_result->__pyx_base.cls = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->default_fields);
  __Pyx_DECREF(__pyx_v___pyx_result->default_fields);
  __pyx_v___pyx_result->default_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->factory_fields);
  __Pyx_DECREF(__pyx_v___pyx_result->factory_fields);
  __pyx_v___pyx_result->factory_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->nb_fields = __pyx_t_3;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = ((__pyx_t_5 > 5) != 0);
  if (__pyx_t_6) {
  } else {
    __pyx_t_4 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_6 != 0);
  __pyx_t_4 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])             # <<<<<<<<<<<<<<
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FieldsConstructor__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_SimpleObjectMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_87__pyx_unpickle_SimpleObjectMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_87__pyx_unpickle_SimpleObjectMethod = {"__pyx_unpickle_SimpleObjectMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_87__pyx_unpickle_SimpleObjectMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_87__pyx_unpickle_SimpleObjectMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleObjectMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleObjectMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleObjectMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SimpleObjectMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SimpleObjectMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SimpleObjectMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_86__pyx_unpickle_SimpleObjectMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_86__pyx_unpickle_SimpleObjectMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleObjectMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x678400a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x678400a) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x678400a:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x678400a:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x67, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x678400a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_SimpleObjectMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SimpleObjectMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x678400a = (_dispatch, all_aliases, constructor, fields, missing, typed_dict, unexpected))" % __pyx_checksum)
 *     __pyx_result = SimpleObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_SimpleObjectMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SimpleObjectMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SimpleObjectMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SimpleObjectMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[7])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->all_aliases);
  __Pyx_DECREF(__pyx_v___pyx_result->all_aliases);
  __pyx_v___pyx_result->all_aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_Constructor))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constructor);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->constructor));
  __pyx_v___pyx_result->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->fields);
  __Pyx_DECREF(__pyx_v___pyx_result->fields);
  __pyx_v___pyx_result->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->missing);
  __Pyx_DECREF(__pyx_v___pyx_result->missing);
  __pyx_v___pyx_result->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->typed_dict = __pyx_t_3;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->unexpected);
  __Pyx_DECREF(__pyx_v___pyx_result->unexpected);
  __pyx_v___pyx_result->unexpected = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[7])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 7) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[7])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[7])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_SimpleObjectMethod__set_state(<SimpleObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SimpleObjectMethod__set_state(SimpleObjectMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.all_aliases = __pyx_state[1]; __pyx_result.constructor = __pyx_state[2]; __pyx_result.fields = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]; __pyx_result.typed_dict = __pyx_state[5]; __pyx_result.unexpected = __pyx_state[6]
 *     if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SimpleObjectMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ObjectMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_89__pyx_unpickle_ObjectMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_89__pyx_unpickle_ObjectMethod = {"__pyx_unpickle_ObjectMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_89__pyx_unpickle_ObjectMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_89__pyx_unpickle_ObjectMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ObjectMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ObjectMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ObjectMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ObjectMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ObjectMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ObjectMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_88__pyx_unpickle_ObjectMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_88__pyx_unpickle_ObjectMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ObjectMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x4c3ff87:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x4c3ff87) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x4c3ff87:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x4c3ff87:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x4c, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x4c3ff87:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ObjectMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ObjectMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x4c3ff87 = (_dispatch, additional_field, additional_properties, aggregate_fields, aliaser, all_aliases, constraints, constructor, discriminator, fields, flattened_fields, init_defaults, missing, pattern_fields, post_init_modified, typed_dict, unexpected, validators))" % __pyx_checksum)
 *     __pyx_result = ObjectMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ObjectMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ObjectMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ObjectMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ObjectMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[18])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->additional_field);
  __Pyx_DECREF(__pyx_v___pyx_result->additional_field);
  __pyx_v___pyx_result->additional_field = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->additional_properties = __pyx_t_3;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->aggregate_fields = __pyx_t_3;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->aliaser);
  __Pyx_DECREF(__pyx_v___pyx_result->aliaser);
  __pyx_v___pyx_result->aliaser = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->all_aliases);
  __Pyx_DECREF(__pyx_v___pyx_result->all_aliases);
  __pyx_v___pyx_result->all_aliases = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_Constructor))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constructor);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->constructor));
  __pyx_v___pyx_result->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->discriminator);
  __Pyx_DECREF(__pyx_v___pyx_result->discriminator);
  __pyx_v___pyx_result->discriminator = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->fields);
  __Pyx_DECREF(__pyx_v___pyx_result->fields);
  __pyx_v___pyx_result->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->flattened_fields);
  __Pyx_DECREF(__pyx_v___pyx_result->flattened_fields);
  __pyx_v___pyx_result->flattened_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->init_defaults);
  __Pyx_DECREF(__pyx_v___pyx_result->init_defaults);
  __pyx_v___pyx_result->init_defaults = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->missing);
  __Pyx_DECREF(__pyx_v___pyx_result->missing);
  __pyx_v___pyx_result->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 13, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->pattern_fields);
  __Pyx_DECREF(__pyx_v___pyx_result->pattern_fields);
  __pyx_v___pyx_result->pattern_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 14, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->post_init_modified);
  __Pyx_DECREF(__pyx_v___pyx_result->post_init_modified);
  __pyx_v___pyx_result->post_init_modified = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 15, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->typed_dict = __pyx_t_3;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 16, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->unexpected);
  __Pyx_DECREF(__pyx_v___pyx_result->unexpected);
  __pyx_v___pyx_result->unexpected = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 17, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->validators);
  __Pyx_DECREF(__pyx_v___pyx_result->validators);
  __pyx_v___pyx_result->validators = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[18])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 18) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[18])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 18, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[18])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ObjectMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_NoneMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_91__pyx_unpickle_NoneMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_91__pyx_unpickle_NoneMethod = {"__pyx_unpickle_NoneMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_91__pyx_unpickle_NoneMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_91__pyx_unpickle_NoneMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoneMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoneMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoneMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_NoneMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_NoneMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoneMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_90__pyx_unpickle_NoneMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_90__pyx_unpickle_NoneMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoneMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = NoneMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = NoneMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = NoneMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_NoneMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = NoneMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = NoneMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoneMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = NoneMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_NoneMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoneMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_NoneMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_NoneMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_NoneMethod__set_state(<NoneMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_NoneMethod__set_state(NoneMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_NoneMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_IntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_93__pyx_unpickle_IntMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_93__pyx_unpickle_IntMethod = {"__pyx_unpickle_IntMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_93__pyx_unpickle_IntMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_93__pyx_unpickle_IntMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_IntMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_IntMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_IntMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_IntMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_IntMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_IntMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_92__pyx_unpickle_IntMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_92__pyx_unpickle_IntMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_IntMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = IntMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = IntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = IntMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_IntMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = IntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = IntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_IntMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = IntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_IntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_IntMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_IntMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_IntMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_IntMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_FloatMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_95__pyx_unpickle_FloatMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_95__pyx_unpickle_FloatMethod = {"__pyx_unpickle_FloatMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_95__pyx_unpickle_FloatMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_95__pyx_unpickle_FloatMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_FloatMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FloatMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FloatMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_FloatMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FloatMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FloatMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_94__pyx_unpickle_FloatMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_94__pyx_unpickle_FloatMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FloatMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = FloatMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = FloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = FloatMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = FloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = FloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FloatMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = FloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FloatMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FloatMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_FloatMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_FloatMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_FloatMethod__set_state(<FloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FloatMethod__set_state(FloatMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_FloatMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_StrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_97__pyx_unpickle_StrMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_97__pyx_unpickle_StrMethod = {"__pyx_unpickle_StrMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_97__pyx_unpickle_StrMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_97__pyx_unpickle_StrMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_StrMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_StrMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_StrMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_StrMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_StrMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_StrMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_96__pyx_unpickle_StrMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_96__pyx_unpickle_StrMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_StrMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = StrMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = StrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = StrMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_StrMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = StrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = StrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_StrMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = StrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_StrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_StrMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_StrMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_StrMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_StrMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_BoolMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_99__pyx_unpickle_BoolMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_99__pyx_unpickle_BoolMethod = {"__pyx_unpickle_BoolMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_99__pyx_unpickle_BoolMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_99__pyx_unpickle_BoolMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_BoolMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_BoolMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_BoolMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_BoolMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_BoolMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_BoolMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_98__pyx_unpickle_BoolMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_98__pyx_unpickle_BoolMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_BoolMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x05289b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = BoolMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x05289b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = BoolMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x05289b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = BoolMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_BoolMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = BoolMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = BoolMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_BoolMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x05289b3 = (_dispatch))" % __pyx_checksum)
 *     __pyx_result = BoolMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_BoolMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_BoolMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_BoolMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_BoolMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 1) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[1])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_BoolMethod__set_state(<BoolMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_BoolMethod__set_state(BoolMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_BoolMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedIntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_101__pyx_unpickle_ConstrainedIntMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_101__pyx_unpickle_ConstrainedIntMethod = {"__pyx_unpickle_ConstrainedIntMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_101__pyx_unpickle_ConstrainedIntMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_101__pyx_unpickle_ConstrainedIntMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedIntMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedIntMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedIntMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConstrainedIntMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedIntMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedIntMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_100__pyx_unpickle_ConstrainedIntMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_100__pyx_unpickle_ConstrainedIntMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedIntMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x5539d84) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x55, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedIntMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedIntMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedIntMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedIntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedIntMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedIntMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedIntMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base.__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedIntMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedFloatMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_103__pyx_unpickle_ConstrainedFloatMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_103__pyx_unpickle_ConstrainedFloatMethod = {"__pyx_unpickle_ConstrainedFloatMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_103__pyx_unpickle_ConstrainedFloatMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_103__pyx_unpickle_ConstrainedFloatMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedFloatMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedFloatMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedFloatMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConstrainedFloatMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedFloatMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedFloatMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_102__pyx_unpickle_ConstrainedFloatMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_102__pyx_unpickle_ConstrainedFloatMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedFloatMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x5539d84) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x55, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedFloatMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedFloatMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedFloatMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedFloatMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedFloatMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedFloatMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedFloatMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base.__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedFloatMethod__set_state(<ConstrainedFloatMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedFloatMethod__set_state(ConstrainedFloatMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedFloatMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedStrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_105__pyx_unpickle_ConstrainedStrMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_105__pyx_unpickle_ConstrainedStrMethod = {"__pyx_unpickle_ConstrainedStrMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_105__pyx_unpickle_ConstrainedStrMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_105__pyx_unpickle_ConstrainedStrMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedStrMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedStrMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedStrMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConstrainedStrMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConstrainedStrMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedStrMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_104__pyx_unpickle_ConstrainedStrMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_104__pyx_unpickle_ConstrainedStrMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedStrMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x5539d84) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x5539d84:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x55, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x5539d84:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConstrainedStrMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedStrMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x5539d84 = (_dispatch, constraints))" % __pyx_checksum)
 *     __pyx_result = ConstrainedStrMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedStrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedStrMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConstrainedStrMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConstrainedStrMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base.__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConstrainedStrMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_SubprimitiveMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_107__pyx_unpickle_SubprimitiveMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_107__pyx_unpickle_SubprimitiveMethod = {"__pyx_unpickle_SubprimitiveMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_107__pyx_unpickle_SubprimitiveMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_107__pyx_unpickle_SubprimitiveMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_SubprimitiveMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SubprimitiveMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SubprimitiveMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SubprimitiveMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SubprimitiveMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SubprimitiveMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_106__pyx_unpickle_SubprimitiveMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_106__pyx_unpickle_SubprimitiveMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SubprimitiveMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa61373f:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xa61373f) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa61373f:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xa61373f:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xa6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa61373f:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_SubprimitiveMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SubprimitiveMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa61373f = (_dispatch, cls, method))" % __pyx_checksum)
 *     __pyx_result = SubprimitiveMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_SubprimitiveMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SubprimitiveMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_SubprimitiveMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_SubprimitiveMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->cls);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->cls));
  __pyx_v___pyx_result->cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_SubprimitiveMethod__set_state(<SubprimitiveMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SubprimitiveMethod__set_state(SubprimitiveMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_SubprimitiveMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_TupleMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_109__pyx_unpickle_TupleMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_109__pyx_unpickle_TupleMethod = {"__pyx_unpickle_TupleMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_109__pyx_unpickle_TupleMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_109__pyx_unpickle_TupleMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_TupleMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TupleMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TupleMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_TupleMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TupleMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TupleMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_108__pyx_unpickle_TupleMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_108__pyx_unpickle_TupleMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_TupleMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x719dc0a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x719dc0a) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x719dc0a:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 *     __pyx_result = TupleMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x719dc0a:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = TupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x71, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x719dc0a:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 *     __pyx_result = TupleMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_TupleMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 *     __pyx_result = TupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = TupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TupleMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x719dc0a = (_dispatch, constraints, elt_methods, max_len_error, min_len_error))" % __pyx_checksum)
 *     __pyx_result = TupleMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_TupleMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TupleMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_TupleMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_TupleMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->constraints);
  __Pyx_DECREF(__pyx_v___pyx_result->constraints);
  __pyx_v___pyx_result->constraints = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->elt_methods);
  __Pyx_DECREF(__pyx_v___pyx_result->elt_methods);
  __pyx_v___pyx_result->elt_methods = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->max_len_error);
  __Pyx_DECREF(__pyx_v___pyx_result->max_len_error);
  __pyx_v___pyx_result->max_len_error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->min_len_error);
  __Pyx_DECREF(__pyx_v___pyx_result->min_len_error);
  __pyx_v___pyx_result->min_len_error = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 5) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_TupleMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_OptionalMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_111__pyx_unpickle_OptionalMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_111__pyx_unpickle_OptionalMethod = {"__pyx_unpickle_OptionalMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_111__pyx_unpickle_OptionalMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_111__pyx_unpickle_OptionalMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_OptionalMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_OptionalMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_OptionalMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_OptionalMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_OptionalMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_OptionalMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_110__pyx_unpickle_OptionalMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_110__pyx_unpickle_OptionalMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_OptionalMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe76e409:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xe76e409) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe76e409:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xe76e409:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xe7, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xe76e409:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_OptionalMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_OptionalMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xe76e409 = (_dispatch, coercer, value_method))" % __pyx_checksum)
 *     __pyx_result = OptionalMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_OptionalMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_OptionalMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_OptionalMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_OptionalMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->coercer);
  __Pyx_DECREF(__pyx_v___pyx_result->coercer);
  __pyx_v___pyx_result->coercer = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->value_method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->value_method));
  __pyx_v___pyx_result->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_OptionalMethod__set_state(<OptionalMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_OptionalMethod__set_state(OptionalMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_OptionalMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_UnionByTypeMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_113__pyx_unpickle_UnionByTypeMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_113__pyx_unpickle_UnionByTypeMethod = {"__pyx_unpickle_UnionByTypeMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_113__pyx_unpickle_UnionByTypeMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_113__pyx_unpickle_UnionByTypeMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionByTypeMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionByTypeMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionByTypeMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_UnionByTypeMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionByTypeMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionByTypeMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_112__pyx_unpickle_UnionByTypeMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_112__pyx_unpickle_UnionByTypeMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionByTypeMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x551d0b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x551d0b3) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x551d0b3:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x551d0b3:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x55_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x551d0b3:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_UnionByTypeMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionByTypeMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x551d0b3 = (_dispatch, method_by_cls))" % __pyx_checksum)
 *     __pyx_result = UnionByTypeMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_UnionByTypeMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionByTypeMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionByTypeMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionByTypeMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method_by_cls);
  __Pyx_DECREF(__pyx_v___pyx_result->method_by_cls);
  __pyx_v___pyx_result->method_by_cls = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionByTypeMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_UnionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_115__pyx_unpickle_UnionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_115__pyx_unpickle_UnionMethod = {"__pyx_unpickle_UnionMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_115__pyx_unpickle_UnionMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_115__pyx_unpickle_UnionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_UnionMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_UnionMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_114__pyx_unpickle_UnionMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_114__pyx_unpickle_UnionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7bbe5aa:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x7bbe5aa) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7bbe5aa:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 *     __pyx_result = UnionMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x7bbe5aa:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = UnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x7b, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x7bbe5aa:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 *     __pyx_result = UnionMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_UnionMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 *     __pyx_result = UnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = UnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x7bbe5aa = (_dispatch, alt_methods))" % __pyx_checksum)
 *     __pyx_result = UnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_UnionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_UnionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_UnionMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->alt_methods);
  __Pyx_DECREF(__pyx_v___pyx_result->alt_methods);
  __pyx_v___pyx_result->alt_methods = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_UnionMethod__set_state(<UnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionMethod__set_state(UnionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alt_methods = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_UnionMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConversionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_117__pyx_unpickle_ConversionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_117__pyx_unpickle_ConversionMethod = {"__pyx_unpickle_ConversionMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_117__pyx_unpickle_ConversionMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_117__pyx_unpickle_ConversionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConversionMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_116__pyx_unpickle_ConversionMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_116__pyx_unpickle_ConversionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xf60e9e9) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xf60e9e9:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xf6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConversionMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->converter);
  __Pyx_DECREF(__pyx_v___pyx_result->converter);
  __pyx_v___pyx_result->converter = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConversionWithValueErrorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_119__pyx_unpickle_ConversionWithValueErrorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_119__pyx_unpickle_ConversionWithValueErrorMethod = {"__pyx_unpickle_ConversionWithValueErrorMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_119__pyx_unpickle_ConversionWithValueErrorMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_119__pyx_unpickle_ConversionWithValueErrorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionWithValueErrorMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionWithValueErrorMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionWithValueErrorMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConversionWithValueErrorMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionWithValueErrorMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionWithValueErrorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_118__pyx_unpickle_ConversionWithValueErrorMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_118__pyx_unpickle_ConversionWithValueErrorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionWithValueErrorMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xf60e9e9) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xf60e9e9:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xf6, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xf60e9e9:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionWithValueErrorMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xf60e9e9 = (_dispatch, converter, method))" % __pyx_checksum)
 *     __pyx_result = ConversionWithValueErrorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionWithValueErrorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionWithValueErrorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionWithValueErrorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionWithValueErrorMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base.__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.converter);
  __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.converter);
  __pyx_v___pyx_result->__pyx_base.converter = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->__pyx_base.method));
  __pyx_v___pyx_result->__pyx_base.method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionWithValueErrorMethod__set_state(<ConversionWithValueErrorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionWithValueErrorMethod__set_state(ConversionWithValueErrorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionWithValueErrorMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConversionAlternative(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_121__pyx_unpickle_ConversionAlternative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_121__pyx_unpickle_ConversionAlternative = {"__pyx_unpickle_ConversionAlternative", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_121__pyx_unpickle_ConversionAlternative, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_121__pyx_unpickle_ConversionAlternative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionAlternative (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionAlternative", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionAlternative", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConversionAlternative") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionAlternative", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionAlternative", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_120__pyx_unpickle_ConversionAlternative(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_120__pyx_unpickle_ConversionAlternative(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionAlternative", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfa59e26:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xfa59e26) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfa59e26:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xfa59e26:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xfa, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xfa59e26:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConversionAlternative), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionAlternative__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfa59e26 = (converter, method, value_error))" % __pyx_checksum)
 *     __pyx_result = ConversionAlternative.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionAlternative(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionAlternative", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionAlternative__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionAlternative__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->converter);
  __Pyx_DECREF(__pyx_v___pyx_result->converter);
  __pyx_v___pyx_result->converter = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod))))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->method);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->method));
  __pyx_v___pyx_result->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->value_error = __pyx_t_2;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_4 = ((__pyx_t_3 > 3) != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[3])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionAlternative__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ConversionUnionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_123__pyx_unpickle_ConversionUnionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_123__pyx_unpickle_ConversionUnionMethod = {"__pyx_unpickle_ConversionUnionMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_123__pyx_unpickle_ConversionUnionMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_123__pyx_unpickle_ConversionUnionMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionUnionMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionUnionMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionUnionMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ConversionUnionMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConversionUnionMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionUnionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_122__pyx_unpickle_ConversionUnionMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_122__pyx_unpickle_ConversionUnionMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionUnionMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x40132a4:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x40132a4) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x40132a4:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x40132a4:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x40, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x40132a4:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_ConversionUnionMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionUnionMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x40132a4 = (_dispatch, alternatives))" % __pyx_checksum)
 *     __pyx_result = ConversionUnionMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionUnionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionUnionMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_ConversionUnionMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConversionUnionMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->alternatives);
  __Pyx_DECREF(__pyx_v___pyx_result->alternatives);
  __pyx_v___pyx_result->alternatives = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[2])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionUnionMethod__set_state(<ConversionUnionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionUnionMethod__set_state(ConversionUnionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alternatives = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_ConversionUnionMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_DiscriminatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_125__pyx_unpickle_DiscriminatorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9apischema_15deserialization_7methods_125__pyx_unpickle_DiscriminatorMethod = {"__pyx_unpickle_DiscriminatorMethod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_125__pyx_unpickle_DiscriminatorMethod, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9apischema_15deserialization_7methods_125__pyx_unpickle_DiscriminatorMethod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_DiscriminatorMethod (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DiscriminatorMethod", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DiscriminatorMethod", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_DiscriminatorMethod") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_DiscriminatorMethod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DiscriminatorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9apischema_15deserialization_7methods_124__pyx_unpickle_DiscriminatorMethod(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9apischema_15deserialization_7methods_124__pyx_unpickle_DiscriminatorMethod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DiscriminatorMethod", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x54fa86d:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x54fa86d) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x54fa86d:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0x54fa86d:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x54, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(1, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0x54fa86d:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9apischema_15deserialization_7methods_DiscriminatorMethod), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DiscriminatorMethod__set_state(((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x54fa86d = (_dispatch, alias, error, mapping, missing))" % __pyx_checksum)
 *     __pyx_result = DiscriminatorMethod.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DiscriminatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DiscriminatorMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_9apischema_15deserialization_7methods___pyx_unpickle_DiscriminatorMethod__set_state(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_DiscriminatorMethod__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->__pyx_base._dispatch = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->alias);
  __Pyx_DECREF(__pyx_v___pyx_result->alias);
  __pyx_v___pyx_result->alias = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->error);
  __Pyx_DECREF(__pyx_v___pyx_result->error);
  __pyx_v___pyx_result->error = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->mapping);
  __Pyx_DECREF(__pyx_v___pyx_result->mapping);
  __pyx_v___pyx_result->mapping = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->missing);
  __Pyx_DECREF(__pyx_v___pyx_result->missing);
  __pyx_v___pyx_result->missing = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(1, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 5) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[5])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[5])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_DiscriminatorMethod__set_state(<DiscriminatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DiscriminatorMethod__set_state(DiscriminatorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.alias = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.mapping = __pyx_state[3]; __pyx_result.missing = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("apischema.deserialization.methods.__pyx_unpickle_DiscriminatorMethod__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Constraint(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)o);
  p->error = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->error);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)o;
  if (p->error) {
    e = (*v)(p->error, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constraint *)o;
  tmp = ((PyObject*)p->error);
  p->error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_10Constraint_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_10Constraint_5error_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_Constraint[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10Constraint_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10Constraint_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_Constraint[] = {
  {(char *)"error", __pyx_getprop_9apischema_15deserialization_7methods_10Constraint_error, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_Constraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.Constraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_Constraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_Constraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_Constraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_10Constraint_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_Constraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinimumConstraint __pyx_vtable_9apischema_15deserialization_7methods_MinimumConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinimumConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MinimumConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17MinimumConstraint_minimum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7minimum_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MinimumConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MinimumConstraint[] = {
  {(char *)"minimum", __pyx_getprop_9apischema_15deserialization_7methods_17MinimumConstraint_minimum, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MinimumConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MinimumConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MinimumConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MinimumConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_17MinimumConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MinimumConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaximumConstraint __pyx_vtable_9apischema_15deserialization_7methods_MaximumConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaximumConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MaximumConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17MaximumConstraint_maximum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7maximum_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MaximumConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MaximumConstraint[] = {
  {(char *)"maximum", __pyx_getprop_9apischema_15deserialization_7methods_17MaximumConstraint_maximum, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MaximumConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MaximumConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MaximumConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MaximumConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_17MaximumConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MaximumConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint __pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_exc_min(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7exc_min_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint[] = {
  {(char *)"exc_min", __pyx_getprop_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_exc_min, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ExclusiveMinimumConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint __pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_exc_max(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7exc_max_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint[] = {
  {(char *)"exc_max", __pyx_getprop_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_exc_max, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ExclusiveMaximumConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MultipleOfConstraint __pyx_vtable_9apischema_15deserialization_7methods_MultipleOfConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MultipleOfConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MultipleOfConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_20MultipleOfConstraint_mult_of(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7mult_of_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MultipleOfConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MultipleOfConstraint[] = {
  {(char *)"mult_of", __pyx_getprop_9apischema_15deserialization_7methods_20MultipleOfConstraint_mult_of, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MultipleOfConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MultipleOfConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MultipleOfConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_20MultipleOfConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MultipleOfConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinLengthConstraint __pyx_vtable_9apischema_15deserialization_7methods_MinLengthConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinLengthConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MinLengthConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19MinLengthConstraint_min_len(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7min_len_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MinLengthConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MinLengthConstraint[] = {
  {(char *)"min_len", __pyx_getprop_9apischema_15deserialization_7methods_19MinLengthConstraint_min_len, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MinLengthConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MinLengthConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MinLengthConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_19MinLengthConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MinLengthConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxLengthConstraint __pyx_vtable_9apischema_15deserialization_7methods_MaxLengthConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxLengthConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MaxLengthConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19MaxLengthConstraint_max_len(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7max_len_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MaxLengthConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MaxLengthConstraint[] = {
  {(char *)"max_len", __pyx_getprop_9apischema_15deserialization_7methods_19MaxLengthConstraint_max_len, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MaxLengthConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MaxLengthConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MaxLengthConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_19MaxLengthConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MaxLengthConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_PatternConstraint __pyx_vtable_9apischema_15deserialization_7methods_PatternConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_PatternConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_PatternConstraint;
  p->pattern = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_PatternConstraint(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->pattern);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_PatternConstraint(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)o;
  e = __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint(o, v, a); if (e) return e;
  if (p->pattern) {
    e = (*v)(p->pattern, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_PatternConstraint(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *)o;
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint(o);
  tmp = ((PyObject*)p->pattern);
  p->pattern = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17PatternConstraint_pattern(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7pattern_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_PatternConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_PatternConstraint[] = {
  {(char *)"pattern", __pyx_getprop_9apischema_15deserialization_7methods_17PatternConstraint_pattern, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_PatternConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.PatternConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_PatternConstraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_PatternConstraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_PatternConstraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_PatternConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_PatternConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_17PatternConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_PatternConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinItemsConstraint __pyx_vtable_9apischema_15deserialization_7methods_MinItemsConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MinItemsConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18MinItemsConstraint_min_items(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_9min_items_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MinItemsConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MinItemsConstraint[] = {
  {(char *)"min_items", __pyx_getprop_9apischema_15deserialization_7methods_18MinItemsConstraint_min_items, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MinItemsConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MinItemsConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MinItemsConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_18MinItemsConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MinItemsConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxItemsConstraint __pyx_vtable_9apischema_15deserialization_7methods_MaxItemsConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MaxItemsConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18MaxItemsConstraint_max_items(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_9max_items_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MaxItemsConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MaxItemsConstraint[] = {
  {(char *)"max_items", __pyx_getprop_9apischema_15deserialization_7methods_18MaxItemsConstraint_max_items, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MaxItemsConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MaxItemsConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MaxItemsConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_18MaxItemsConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MaxItemsConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UniqueItemsConstraint __pyx_vtable_9apischema_15deserialization_7methods_UniqueItemsConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UniqueItemsConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_UniqueItemsConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_21UniqueItemsConstraint_unique(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_6unique_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_UniqueItemsConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_UniqueItemsConstraint[] = {
  {(char *)"unique", __pyx_getprop_9apischema_15deserialization_7methods_21UniqueItemsConstraint_unique, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.UniqueItemsConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_UniqueItemsConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_UniqueItemsConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_21UniqueItemsConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_UniqueItemsConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MinPropertiesConstraint __pyx_vtable_9apischema_15deserialization_7methods_MinPropertiesConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MinPropertiesConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MinPropertiesConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_23MinPropertiesConstraint_min_properties(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_14min_properties_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MinPropertiesConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MinPropertiesConstraint[] = {
  {(char *)"min_properties", __pyx_getprop_9apischema_15deserialization_7methods_23MinPropertiesConstraint_min_properties, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MinPropertiesConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MinPropertiesConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MinPropertiesConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_23MinPropertiesConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MinPropertiesConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MaxPropertiesConstraint __pyx_vtable_9apischema_15deserialization_7methods_MaxPropertiesConstraint;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MaxPropertiesConstraint(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constraint(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MaxPropertiesConstraint;
  return o;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_max_properties(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_14max_properties_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MaxPropertiesConstraint[] = {
  {"validate", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_1validate, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MaxPropertiesConstraint[] = {
  {(char *)"max_properties", __pyx_getprop_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_max_properties, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MaxPropertiesConstraint", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constraint, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constraint, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constraint, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MaxPropertiesConstraint, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MaxPropertiesConstraint, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MaxPropertiesConstraint, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_DeserializationMethod[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21DeserializationMethod_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_DeserializationMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.DeserializationMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RecMethod __pyx_vtable_9apischema_15deserialization_7methods_RecMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_RecMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_RecMethod;
  p->lazy = Py_None; Py_INCREF(Py_None);
  p->method = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_RecMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->lazy);
  Py_CLEAR(p->method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_RecMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_RecMethod)); if (e) return e;
  if (p->lazy) {
    e = (*v)(p->lazy, a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(p->method, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_RecMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_RecMethod);
  tmp = ((PyObject*)p->lazy);
  p->lazy = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_9RecMethod_lazy(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_9RecMethod_4lazy_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_9RecMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_9RecMethod_6method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_RecMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9RecMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_RecMethod[] = {
  {(char *)"lazy", __pyx_getprop_9apischema_15deserialization_7methods_9RecMethod_lazy, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_9RecMethod_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_RecMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.RecMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_RecMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_RecMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_RecMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_RecMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_RecMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_9RecMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_RecMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ValidatorMethod __pyx_vtable_9apischema_15deserialization_7methods_ValidatorMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ValidatorMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ValidatorMethod;
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  p->validators = Py_None; Py_INCREF(Py_None);
  p->aliaser = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ValidatorMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->method);
  Py_CLEAR(p->validators);
  Py_CLEAR(p->aliaser);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ValidatorMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ValidatorMethod)); if (e) return e;
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  if (p->validators) {
    e = (*v)(p->validators, a); if (e) return e;
  }
  if (p->aliaser) {
    e = (*v)(p->aliaser, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ValidatorMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ValidatorMethod);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->validators);
  p->validators = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->aliaser);
  p->aliaser = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_validators(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_10validators_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_aliaser(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7aliaser_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ValidatorMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ValidatorMethod[] = {
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_method, 0, (char *)0, 0},
  {(char *)"validators", __pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_validators, 0, (char *)0, 0},
  {(char *)"aliaser", __pyx_getprop_9apischema_15deserialization_7methods_15ValidatorMethod_aliaser, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ValidatorMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ValidatorMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_15ValidatorMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ValidatorMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_CoercerMethod __pyx_vtable_9apischema_15deserialization_7methods_CoercerMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_CoercerMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_CoercerMethod;
  p->coercer = Py_None; Py_INCREF(Py_None);
  p->cls = ((PyTypeObject*)Py_None); Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_CoercerMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->coercer);
  Py_CLEAR(p->cls);
  Py_CLEAR(p->method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_CoercerMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_CoercerMethod)); if (e) return e;
  if (p->coercer) {
    e = (*v)(p->coercer, a); if (e) return e;
  }
  if (p->cls) {
    e = (*v)(((PyObject *)p->cls), a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_CoercerMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_CoercerMethod);
  tmp = ((PyObject*)p->coercer);
  p->coercer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cls);
  p->cls = ((PyTypeObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_coercer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7coercer_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_cls(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3cls_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_6method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_CoercerMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_CoercerMethod[] = {
  {(char *)"coercer", __pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_coercer, 0, (char *)0, 0},
  {(char *)"cls", __pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_cls, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_13CoercerMethod_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_CoercerMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.CoercerMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_CoercerMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_CoercerMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_CoercerMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_CoercerMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_CoercerMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_13CoercerMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_CoercerMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TypeCheckMethod __pyx_vtable_9apischema_15deserialization_7methods_TypeCheckMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_TypeCheckMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_TypeCheckMethod;
  p->expected = Py_None; Py_INCREF(Py_None);
  p->fallback = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_TypeCheckMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->expected);
  Py_CLEAR(p->fallback);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_TypeCheckMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_TypeCheckMethod)); if (e) return e;
  if (p->expected) {
    e = (*v)(p->expected, a); if (e) return e;
  }
  if (p->fallback) {
    e = (*v)(((PyObject *)p->fallback), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_TypeCheckMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_TypeCheckMethod);
  tmp = ((PyObject*)p->expected);
  p->expected = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->fallback);
  p->fallback = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15TypeCheckMethod_expected(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8expected_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15TypeCheckMethod_fallback(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_8fallback_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_TypeCheckMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_TypeCheckMethod[] = {
  {(char *)"expected", __pyx_getprop_9apischema_15deserialization_7methods_15TypeCheckMethod_expected, 0, (char *)0, 0},
  {(char *)"fallback", __pyx_getprop_9apischema_15deserialization_7methods_15TypeCheckMethod_fallback, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.TypeCheckMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_15TypeCheckMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_TypeCheckMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_AnyMethod __pyx_vtable_9apischema_15deserialization_7methods_AnyMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_AnyMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_AnyMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_AnyMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_AnyMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_AnyMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_AnyMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_AnyMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_9AnyMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_11constraints_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_AnyMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_AnyMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_9AnyMethod_constraints, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_AnyMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.AnyMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_AnyMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_AnyMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_AnyMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_AnyMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_AnyMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_9AnyMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_AnyMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListCheckOnlyMethod __pyx_vtable_9apischema_15deserialization_7methods_ListCheckOnlyMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ListCheckOnlyMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ListCheckOnlyMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ListCheckOnlyMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->value_method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ListCheckOnlyMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ListCheckOnlyMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ListCheckOnlyMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ListCheckOnlyMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_12value_method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ListCheckOnlyMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ListCheckOnlyMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_constraints, 0, (char *)0, 0},
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_value_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ListCheckOnlyMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ListCheckOnlyMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ListMethod __pyx_vtable_9apischema_15deserialization_7methods_ListMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ListMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ListMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ListMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->value_method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ListMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ListMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ListMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ListMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_10ListMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_10ListMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_10ListMethod_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_10ListMethod_12value_method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ListMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10ListMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ListMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_10ListMethod_constraints, 0, (char *)0, 0},
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_10ListMethod_value_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ListMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ListMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ListMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ListMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ListMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ListMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ListMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_10ListMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ListMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SetMethod __pyx_vtable_9apischema_15deserialization_7methods_SetMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SetMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_SetMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_SetMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->value_method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_SetMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_SetMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_SetMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_SetMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_9SetMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_9SetMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_9SetMethod_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_9SetMethod_12value_method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_SetMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9SetMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_SetMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_9SetMethod_constraints, 0, (char *)0, 0},
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_9SetMethod_value_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_SetMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.SetMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_SetMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_SetMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_SetMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_SetMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_SetMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_9SetMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_SetMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_VariadicTupleMethod __pyx_vtable_9apischema_15deserialization_7methods_VariadicTupleMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_VariadicTupleMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_VariadicTupleMethod;
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_VariadicTupleMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_VariadicTupleMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_VariadicTupleMethod)); if (e) return e;
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_VariadicTupleMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_VariadicTupleMethod);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19VariadicTupleMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_6method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_VariadicTupleMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_VariadicTupleMethod[] = {
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_19VariadicTupleMethod_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.VariadicTupleMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_19VariadicTupleMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_VariadicTupleMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_LiteralMethod __pyx_vtable_9apischema_15deserialization_7methods_LiteralMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_LiteralMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_LiteralMethod;
  p->value_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->error = Py_None; Py_INCREF(Py_None);
  p->coercer = Py_None; Py_INCREF(Py_None);
  p->types = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_LiteralMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->value_map);
  Py_CLEAR(p->error);
  Py_CLEAR(p->coercer);
  Py_CLEAR(p->types);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_LiteralMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_LiteralMethod)); if (e) return e;
  if (p->value_map) {
    e = (*v)(p->value_map, a); if (e) return e;
  }
  if (p->error) {
    e = (*v)(p->error, a); if (e) return e;
  }
  if (p->coercer) {
    e = (*v)(p->coercer, a); if (e) return e;
  }
  if (p->types) {
    e = (*v)(p->types, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_LiteralMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_LiteralMethod);
  tmp = ((PyObject*)p->value_map);
  p->value_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->error);
  p->error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->coercer);
  p->coercer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->types);
  p->types = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_value_map(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_9value_map_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5error_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_coercer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7coercer_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_types(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5types_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_LiteralMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_LiteralMethod[] = {
  {(char *)"value_map", __pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_value_map, 0, (char *)0, 0},
  {(char *)"error", __pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_error, 0, (char *)0, 0},
  {(char *)"coercer", __pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_coercer, 0, (char *)0, 0},
  {(char *)"types", __pyx_getprop_9apischema_15deserialization_7methods_13LiteralMethod_types, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_LiteralMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.LiteralMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_LiteralMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_LiteralMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_LiteralMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_LiteralMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_LiteralMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_13LiteralMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_LiteralMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingCheckOnly __pyx_vtable_9apischema_15deserialization_7methods_MappingCheckOnly;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MappingCheckOnly(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MappingCheckOnly;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_MappingCheckOnly(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->key_method);
  Py_CLEAR(p->value_method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingCheckOnly(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingCheckOnly)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->key_method) {
    e = (*v)(((PyObject *)p->key_method), a); if (e) return e;
  }
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_MappingCheckOnly(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_MappingCheckOnly);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->key_method);
  p->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_key_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_10key_method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_12value_method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MappingCheckOnly[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MappingCheckOnly[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_constraints, 0, (char *)0, 0},
  {(char *)"key_method", __pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_key_method, 0, (char *)0, 0},
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_16MappingCheckOnly_value_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MappingCheckOnly", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_16MappingCheckOnly_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MappingCheckOnly, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_MappingMethod __pyx_vtable_9apischema_15deserialization_7methods_MappingMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_MappingMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_MappingMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_MappingMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->key_method);
  Py_CLEAR(p->value_method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->key_method) {
    e = (*v)(((PyObject *)p->key_method), a); if (e) return e;
  }
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_MappingMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_MappingMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->key_method);
  p->key_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_key_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_10key_method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_12value_method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_MappingMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_MappingMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_constraints, 0, (char *)0, 0},
  {(char *)"key_method", __pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_key_method, 0, (char *)0, 0},
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_13MappingMethod_value_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_MappingMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.MappingMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_MappingMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_MappingMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_MappingMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_MappingMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_MappingMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_13MappingMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_MappingMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Field(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_Field *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->alias = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  p->required_by = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_Field(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Field *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->alias);
  Py_CLEAR(p->method);
  Py_CLEAR(p->required_by);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_Field(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Field *)o;
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  if (p->required_by) {
    e = (*v)(p->required_by, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_Field(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_Field *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Field *)o;
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->required_by);
  p->required_by = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_alias(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_5alias_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_required(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_8required_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_required_by(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_11required_by_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_5Field_fall_back_on_default(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_5Field_20fall_back_on_default_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_Field[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_5Field_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_5Field_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_Field[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_5Field_name, 0, (char *)0, 0},
  {(char *)"alias", __pyx_getprop_9apischema_15deserialization_7methods_5Field_alias, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_5Field_method, 0, (char *)0, 0},
  {(char *)"required", __pyx_getprop_9apischema_15deserialization_7methods_5Field_required, 0, (char *)0, 0},
  {(char *)"required_by", __pyx_getprop_9apischema_15deserialization_7methods_5Field_required_by, 0, (char *)0, 0},
  {(char *)"fall_back_on_default", __pyx_getprop_9apischema_15deserialization_7methods_5Field_fall_back_on_default, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_Field = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.Field", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_Field), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Field, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Field, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Field, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_Field, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_Field, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_5Field_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_Field, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FlattenedField(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_FlattenedField(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->aliases);
  Py_CLEAR(p->method);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_FlattenedField(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)o;
  if (p->aliases) {
    e = (*v)(p->aliases, a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_FlattenedField(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField *)o;
  tmp = ((PyObject*)p->aliases);
  p->aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_aliases(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_7aliases_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_fall_back_on_default(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_20fall_back_on_default_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_FlattenedField[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_FlattenedField[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_name, 0, (char *)0, 0},
  {(char *)"aliases", __pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_aliases, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_method, 0, (char *)0, 0},
  {(char *)"fall_back_on_default", __pyx_getprop_9apischema_15deserialization_7methods_14FlattenedField_fall_back_on_default, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_FlattenedField = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.FlattenedField", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_FlattenedField), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_FlattenedField, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_FlattenedField, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_FlattenedField, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_FlattenedField, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_FlattenedField, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_14FlattenedField_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_FlattenedField, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_PatternField(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->pattern = Py_None; Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_PatternField(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->pattern);
  Py_CLEAR(p->method);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_PatternField(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)o;
  if (p->pattern) {
    e = (*v)(p->pattern, a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_PatternField(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_PatternField *)o;
  tmp = ((PyObject*)p->pattern);
  p->pattern = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12PatternField_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12PatternField_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12PatternField_pattern(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12PatternField_7pattern_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12PatternField_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12PatternField_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12PatternField_fall_back_on_default(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12PatternField_20fall_back_on_default_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_PatternField[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12PatternField_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12PatternField_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_PatternField[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_12PatternField_name, 0, (char *)0, 0},
  {(char *)"pattern", __pyx_getprop_9apischema_15deserialization_7methods_12PatternField_pattern, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_12PatternField_method, 0, (char *)0, 0},
  {(char *)"fall_back_on_default", __pyx_getprop_9apischema_15deserialization_7methods_12PatternField_fall_back_on_default, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_PatternField = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.PatternField", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_PatternField), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_PatternField, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_PatternField, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_PatternField, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_PatternField, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_PatternField, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_12PatternField_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_PatternField, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_AdditionalField(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_AdditionalField(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->method);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_AdditionalField(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)o;
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_AdditionalField(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField *)o;
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_fall_back_on_default(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_20fall_back_on_default_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_AdditionalField[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_AdditionalField[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_name, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_method, 0, (char *)0, 0},
  {(char *)"fall_back_on_default", __pyx_getprop_9apischema_15deserialization_7methods_15AdditionalField_fall_back_on_default, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_AdditionalField = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.AdditionalField", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_AdditionalField), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_AdditionalField, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_AdditionalField, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_AdditionalField, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_AdditionalField, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_AdditionalField, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_15AdditionalField_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_AdditionalField, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_Constructor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)o);
  p->cls = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constructor(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->cls);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_Constructor(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)o;
  if (p->cls) {
    e = (*v)(p->cls, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_Constructor(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)o;
  tmp = ((PyObject*)p->cls);
  p->cls = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11Constructor_cls(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11Constructor_3cls_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_Constructor[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11Constructor_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11Constructor_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_Constructor[] = {
  {(char *)"cls", __pyx_getprop_9apischema_15deserialization_7methods_11Constructor_cls, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_Constructor = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.Constructor", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_Constructor), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constructor, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constructor, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constructor, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_Constructor, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_Constructor, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_11Constructor_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_Constructor, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoConstructor __pyx_vtable_9apischema_15deserialization_7methods_NoConstructor;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_NoConstructor(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constructor(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_NoConstructor;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_NoConstructor[] = {
  {"construct", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_1construct, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_NoConstructor = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.NoConstructor", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constructor, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constructor, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constructor, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_NoConstructor, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_13NoConstructor_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_NoConstructor, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_RawConstructor __pyx_vtable_9apischema_15deserialization_7methods_RawConstructor;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_RawConstructor(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constructor(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_RawConstructor;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_RawConstructor[] = {
  {"construct", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_1construct, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_RawConstructor = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.RawConstructor", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constructor, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_Constructor, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constructor, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_RawConstructor, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_14RawConstructor_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_RawConstructor, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DefaultField(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->default_value = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_DefaultField(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->default_value);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_DefaultField(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)o;
  if (p->default_value) {
    e = (*v)(p->default_value, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_DefaultField(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField *)o;
  tmp = ((PyObject*)p->default_value);
  p->default_value = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12DefaultField_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12DefaultField_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12DefaultField_default_value(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12DefaultField_13default_value_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_DefaultField[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12DefaultField_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_DefaultField[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_12DefaultField_name, 0, (char *)0, 0},
  {(char *)"default_value", __pyx_getprop_9apischema_15deserialization_7methods_12DefaultField_default_value, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_DefaultField = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.DefaultField", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_DefaultField), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DefaultField, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_DefaultField, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_DefaultField, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_DefaultField, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_DefaultField, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_12DefaultField_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_DefaultField, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FactoryField(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)o);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->factory = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_FactoryField(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->name);
  Py_CLEAR(p->factory);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_FactoryField(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)o;
  if (p->factory) {
    e = (*v)(p->factory, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_FactoryField(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField *)o;
  tmp = ((PyObject*)p->factory);
  p->factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12FactoryField_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12FactoryField_4name_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12FactoryField_factory(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12FactoryField_7factory_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_FactoryField[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12FactoryField_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_FactoryField[] = {
  {(char *)"name", __pyx_getprop_9apischema_15deserialization_7methods_12FactoryField_name, 0, (char *)0, 0},
  {(char *)"factory", __pyx_getprop_9apischema_15deserialization_7methods_12FactoryField_factory, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_FactoryField = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.FactoryField", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_FactoryField), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_FactoryField, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_FactoryField, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_FactoryField, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_FactoryField, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_FactoryField, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_12FactoryField_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_FactoryField, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FieldsConstructor __pyx_vtable_9apischema_15deserialization_7methods_FieldsConstructor;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FieldsConstructor(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_Constructor(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_FieldsConstructor;
  p->default_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->factory_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_FieldsConstructor(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->default_fields);
  Py_CLEAR(p->factory_fields);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_Constructor(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_FieldsConstructor(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)o;
  e = __pyx_tp_traverse_9apischema_15deserialization_7methods_Constructor(o, v, a); if (e) return e;
  if (p->default_fields) {
    e = (*v)(p->default_fields, a); if (e) return e;
  }
  if (p->factory_fields) {
    e = (*v)(p->factory_fields, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_FieldsConstructor(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *p = (struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *)o;
  __pyx_tp_clear_9apischema_15deserialization_7methods_Constructor(o);
  tmp = ((PyObject*)p->default_fields);
  p->default_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->factory_fields);
  p->factory_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_nb_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_9nb_fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_default_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14default_fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_factory_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_14factory_fields_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_FieldsConstructor[] = {
  {"construct", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_1construct, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_FieldsConstructor[] = {
  {(char *)"nb_fields", __pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_nb_fields, 0, (char *)0, 0},
  {(char *)"default_fields", __pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_default_fields, 0, (char *)0, 0},
  {(char *)"factory_fields", __pyx_getprop_9apischema_15deserialization_7methods_17FieldsConstructor_factory_fields, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_FieldsConstructor = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.FieldsConstructor", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_17FieldsConstructor_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_FieldsConstructor, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SimpleObjectMethod __pyx_vtable_9apischema_15deserialization_7methods_SimpleObjectMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SimpleObjectMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_SimpleObjectMethod;
  p->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)Py_None); Py_INCREF(Py_None);
  p->fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->all_aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->missing = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->unexpected = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_SimpleObjectMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constructor);
  Py_CLEAR(p->fields);
  Py_CLEAR(p->all_aliases);
  Py_CLEAR(p->missing);
  Py_CLEAR(p->unexpected);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_SimpleObjectMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_SimpleObjectMethod)); if (e) return e;
  if (p->constructor) {
    e = (*v)(((PyObject *)p->constructor), a); if (e) return e;
  }
  if (p->fields) {
    e = (*v)(p->fields, a); if (e) return e;
  }
  if (p->all_aliases) {
    e = (*v)(p->all_aliases, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_SimpleObjectMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_SimpleObjectMethod);
  tmp = ((PyObject*)p->constructor);
  p->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->fields);
  p->fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->all_aliases);
  p->all_aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_constructor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11constructor_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_6fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_all_aliases(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_11all_aliases_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_typed_dict(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10typed_dict_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_missing(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7missing_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_unexpected(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_10unexpected_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_SimpleObjectMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_SimpleObjectMethod[] = {
  {(char *)"constructor", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_constructor, 0, (char *)0, 0},
  {(char *)"fields", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_fields, 0, (char *)0, 0},
  {(char *)"all_aliases", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_all_aliases, 0, (char *)0, 0},
  {(char *)"typed_dict", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_typed_dict, 0, (char *)0, 0},
  {(char *)"missing", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_missing, 0, (char *)0, 0},
  {(char *)"unexpected", __pyx_getprop_9apischema_15deserialization_7methods_18SimpleObjectMethod_unexpected, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.SimpleObjectMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_18SimpleObjectMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_SimpleObjectMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ObjectMethod __pyx_vtable_9apischema_15deserialization_7methods_ObjectMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ObjectMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ObjectMethod;
  p->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)Py_None); Py_INCREF(Py_None);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->flattened_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->pattern_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->additional_field = Py_None; Py_INCREF(Py_None);
  p->all_aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->validators = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->init_defaults = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->post_init_modified = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->aliaser = Py_None; Py_INCREF(Py_None);
  p->missing = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->unexpected = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->discriminator = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ObjectMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constructor);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->fields);
  Py_CLEAR(p->flattened_fields);
  Py_CLEAR(p->pattern_fields);
  Py_CLEAR(p->additional_field);
  Py_CLEAR(p->all_aliases);
  Py_CLEAR(p->validators);
  Py_CLEAR(p->init_defaults);
  Py_CLEAR(p->post_init_modified);
  Py_CLEAR(p->aliaser);
  Py_CLEAR(p->missing);
  Py_CLEAR(p->unexpected);
  Py_CLEAR(p->discriminator);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ObjectMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ObjectMethod)); if (e) return e;
  if (p->constructor) {
    e = (*v)(((PyObject *)p->constructor), a); if (e) return e;
  }
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->fields) {
    e = (*v)(p->fields, a); if (e) return e;
  }
  if (p->flattened_fields) {
    e = (*v)(p->flattened_fields, a); if (e) return e;
  }
  if (p->pattern_fields) {
    e = (*v)(p->pattern_fields, a); if (e) return e;
  }
  if (p->additional_field) {
    e = (*v)(p->additional_field, a); if (e) return e;
  }
  if (p->all_aliases) {
    e = (*v)(p->all_aliases, a); if (e) return e;
  }
  if (p->validators) {
    e = (*v)(p->validators, a); if (e) return e;
  }
  if (p->init_defaults) {
    e = (*v)(p->init_defaults, a); if (e) return e;
  }
  if (p->post_init_modified) {
    e = (*v)(p->post_init_modified, a); if (e) return e;
  }
  if (p->aliaser) {
    e = (*v)(p->aliaser, a); if (e) return e;
  }
  if (p->discriminator) {
    e = (*v)(p->discriminator, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ObjectMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ObjectMethod);
  tmp = ((PyObject*)p->constructor);
  p->constructor = ((struct __pyx_obj_9apischema_15deserialization_7methods_Constructor *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->fields);
  p->fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->flattened_fields);
  p->flattened_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->pattern_fields);
  p->pattern_fields = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->additional_field);
  p->additional_field = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->all_aliases);
  p->all_aliases = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->validators);
  p->validators = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->init_defaults);
  p->init_defaults = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->post_init_modified);
  p->post_init_modified = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->aliaser);
  p->aliaser = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->discriminator);
  p->discriminator = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_constructor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constructor_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_6fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_flattened_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16flattened_fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_pattern_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_14pattern_fields_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_additional_field(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16additional_field_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_all_aliases(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_11all_aliases_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_additional_properties(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_21additional_properties_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_typed_dict(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10typed_dict_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_validators(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10validators_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_init_defaults(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13init_defaults_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_post_init_modified(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_18post_init_modified_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_aliaser(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7aliaser_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_missing(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7missing_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_unexpected(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_10unexpected_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_discriminator(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_13discriminator_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_aggregate_fields(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_16aggregate_fields_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ObjectMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ObjectMethod[] = {
  {(char *)"constructor", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_constructor, 0, (char *)0, 0},
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_constraints, 0, (char *)0, 0},
  {(char *)"fields", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_fields, 0, (char *)0, 0},
  {(char *)"flattened_fields", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_flattened_fields, 0, (char *)0, 0},
  {(char *)"pattern_fields", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_pattern_fields, 0, (char *)0, 0},
  {(char *)"additional_field", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_additional_field, 0, (char *)0, 0},
  {(char *)"all_aliases", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_all_aliases, 0, (char *)0, 0},
  {(char *)"additional_properties", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_additional_properties, 0, (char *)0, 0},
  {(char *)"typed_dict", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_typed_dict, 0, (char *)0, 0},
  {(char *)"validators", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_validators, 0, (char *)0, 0},
  {(char *)"init_defaults", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_init_defaults, 0, (char *)0, 0},
  {(char *)"post_init_modified", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_post_init_modified, 0, (char *)0, 0},
  {(char *)"aliaser", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_aliaser, 0, (char *)0, 0},
  {(char *)"missing", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_missing, 0, (char *)0, 0},
  {(char *)"unexpected", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_unexpected, 0, (char *)0, 0},
  {(char *)"discriminator", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_discriminator, 0, (char *)0, 0},
  {(char *)"aggregate_fields", __pyx_getprop_9apischema_15deserialization_7methods_12ObjectMethod_aggregate_fields, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ObjectMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ObjectMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ObjectMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ObjectMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ObjectMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ObjectMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ObjectMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_12ObjectMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ObjectMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_NoneMethod __pyx_vtable_9apischema_15deserialization_7methods_NoneMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_NoneMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_NoneMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_NoneMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_NoneMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.NoneMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_NoneMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_10NoneMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_NoneMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod __pyx_vtable_9apischema_15deserialization_7methods_IntMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_IntMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_IntMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_IntMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9IntMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_IntMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.IntMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_IntMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_9IntMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_IntMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod __pyx_vtable_9apischema_15deserialization_7methods_FloatMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_FloatMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_FloatMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_FloatMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_FloatMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.FloatMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_FloatMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_11FloatMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_FloatMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod __pyx_vtable_9apischema_15deserialization_7methods_StrMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_StrMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_StrMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_StrMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_9StrMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_StrMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.StrMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_StrMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_9StrMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_StrMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_BoolMethod __pyx_vtable_9apischema_15deserialization_7methods_BoolMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_BoolMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_BoolMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_BoolMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_BoolMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.BoolMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_BoolMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_10BoolMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_BoolMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedIntMethod __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedIntMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedIntMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_IntMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9apischema_15deserialization_7methods_IntMethod*)__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedIntMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedIntMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedIntMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_IntMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_IntMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_IntMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedIntMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedIntMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_IntMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_IntMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_IntMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedIntMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_20ConstrainedIntMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_11constraints_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConstrainedIntMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedIntMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_20ConstrainedIntMethod_constraints, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConstrainedIntMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedIntMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedIntMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedIntMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedFloatMethod __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedFloatMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedFloatMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_FloatMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9apischema_15deserialization_7methods_FloatMethod*)__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedFloatMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedFloatMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedFloatMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_FloatMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedFloatMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedFloatMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_FloatMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_FloatMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedFloatMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_11constraints_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConstrainedFloatMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedFloatMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_constraints, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConstrainedFloatMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedFloatMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedFloatMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConstrainedStrMethod __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedStrMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedStrMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_StrMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9apischema_15deserialization_7methods_StrMethod*)__pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedStrMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedStrMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedStrMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_StrMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_StrMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_StrMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedStrMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedStrMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_StrMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_StrMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_StrMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedStrMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_20ConstrainedStrMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_11constraints_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConstrainedStrMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedStrMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_20ConstrainedStrMethod_constraints, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConstrainedStrMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConstrainedStrMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_20ConstrainedStrMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConstrainedStrMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_SubprimitiveMethod __pyx_vtable_9apischema_15deserialization_7methods_SubprimitiveMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_SubprimitiveMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_SubprimitiveMethod;
  p->cls = ((PyTypeObject*)Py_None); Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_SubprimitiveMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->cls);
  Py_CLEAR(p->method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_SubprimitiveMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_SubprimitiveMethod)); if (e) return e;
  if (p->cls) {
    e = (*v)(((PyObject *)p->cls), a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_SubprimitiveMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_SubprimitiveMethod);
  tmp = ((PyObject*)p->cls);
  p->cls = ((PyTypeObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SubprimitiveMethod_cls(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3cls_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_18SubprimitiveMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_6method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_SubprimitiveMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_SubprimitiveMethod[] = {
  {(char *)"cls", __pyx_getprop_9apischema_15deserialization_7methods_18SubprimitiveMethod_cls, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_18SubprimitiveMethod_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.SubprimitiveMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_18SubprimitiveMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_SubprimitiveMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_TupleMethod __pyx_vtable_9apischema_15deserialization_7methods_TupleMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_TupleMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_TupleMethod;
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->min_len_error = Py_None; Py_INCREF(Py_None);
  p->max_len_error = Py_None; Py_INCREF(Py_None);
  p->elt_methods = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_TupleMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->constraints);
  Py_CLEAR(p->min_len_error);
  Py_CLEAR(p->max_len_error);
  Py_CLEAR(p->elt_methods);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_TupleMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_TupleMethod)); if (e) return e;
  if (p->constraints) {
    e = (*v)(p->constraints, a); if (e) return e;
  }
  if (p->min_len_error) {
    e = (*v)(p->min_len_error, a); if (e) return e;
  }
  if (p->max_len_error) {
    e = (*v)(p->max_len_error, a); if (e) return e;
  }
  if (p->elt_methods) {
    e = (*v)(p->elt_methods, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_TupleMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_TupleMethod);
  tmp = ((PyObject*)p->constraints);
  p->constraints = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->min_len_error);
  p->min_len_error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->max_len_error);
  p->max_len_error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->elt_methods);
  p->elt_methods = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_constraints(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11constraints_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_min_len_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13min_len_error_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_max_len_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_13max_len_error_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_elt_methods(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_11elt_methods_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_TupleMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_TupleMethod[] = {
  {(char *)"constraints", __pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_constraints, 0, (char *)0, 0},
  {(char *)"min_len_error", __pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_min_len_error, 0, (char *)0, 0},
  {(char *)"max_len_error", __pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_max_len_error, 0, (char *)0, 0},
  {(char *)"elt_methods", __pyx_getprop_9apischema_15deserialization_7methods_11TupleMethod_elt_methods, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_TupleMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.TupleMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_TupleMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_TupleMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_TupleMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_TupleMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_TupleMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_11TupleMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_TupleMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_OptionalMethod __pyx_vtable_9apischema_15deserialization_7methods_OptionalMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_OptionalMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_OptionalMethod;
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  p->coercer = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_OptionalMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->value_method);
  Py_CLEAR(p->coercer);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_OptionalMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_OptionalMethod)); if (e) return e;
  if (p->value_method) {
    e = (*v)(((PyObject *)p->value_method), a); if (e) return e;
  }
  if (p->coercer) {
    e = (*v)(p->coercer, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_OptionalMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_OptionalMethod);
  tmp = ((PyObject*)p->value_method);
  p->value_method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->coercer);
  p->coercer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14OptionalMethod_value_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_12value_method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_14OptionalMethod_coercer(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7coercer_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_OptionalMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_OptionalMethod[] = {
  {(char *)"value_method", __pyx_getprop_9apischema_15deserialization_7methods_14OptionalMethod_value_method, 0, (char *)0, 0},
  {(char *)"coercer", __pyx_getprop_9apischema_15deserialization_7methods_14OptionalMethod_coercer, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_OptionalMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.OptionalMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_OptionalMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_OptionalMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_OptionalMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_OptionalMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_OptionalMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_14OptionalMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_OptionalMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionByTypeMethod __pyx_vtable_9apischema_15deserialization_7methods_UnionByTypeMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UnionByTypeMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_UnionByTypeMethod;
  p->method_by_cls = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_UnionByTypeMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->method_by_cls);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionByTypeMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionByTypeMethod)); if (e) return e;
  if (p->method_by_cls) {
    e = (*v)(p->method_by_cls, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_UnionByTypeMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_UnionByTypeMethod);
  tmp = ((PyObject*)p->method_by_cls);
  p->method_by_cls = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_17UnionByTypeMethod_method_by_cls(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_13method_by_cls_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_UnionByTypeMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_UnionByTypeMethod[] = {
  {(char *)"method_by_cls", __pyx_getprop_9apischema_15deserialization_7methods_17UnionByTypeMethod_method_by_cls, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.UnionByTypeMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_17UnionByTypeMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_UnionByTypeMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_UnionMethod __pyx_vtable_9apischema_15deserialization_7methods_UnionMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_UnionMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_UnionMethod;
  p->alt_methods = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_UnionMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->alt_methods);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionMethod)); if (e) return e;
  if (p->alt_methods) {
    e = (*v)(p->alt_methods, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_UnionMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_UnionMethod);
  tmp = ((PyObject*)p->alt_methods);
  p->alt_methods = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_11UnionMethod_alt_methods(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_11alt_methods_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_UnionMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_UnionMethod[] = {
  {(char *)"alt_methods", __pyx_getprop_9apischema_15deserialization_7methods_11UnionMethod_alt_methods, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_UnionMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.UnionMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_UnionMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_UnionMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_UnionMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_UnionMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_UnionMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_11UnionMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_UnionMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod __pyx_vtable_9apischema_15deserialization_7methods_ConversionMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionMethod;
  p->converter = Py_None; Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->converter);
  Py_CLEAR(p->method);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionMethod)); if (e) return e;
  if (p->converter) {
    e = (*v)(p->converter, a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionMethod);
  tmp = ((PyObject*)p->converter);
  p->converter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_16ConversionMethod_converter(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_9converter_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_16ConversionMethod_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_6method_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConversionMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConversionMethod[] = {
  {(char *)"converter", __pyx_getprop_9apischema_15deserialization_7methods_16ConversionMethod_converter, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_16ConversionMethod_method, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConversionMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConversionMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConversionMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConversionMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_16ConversionMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConversionMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod __pyx_vtable_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_ConversionMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionMethod*)__pyx_vtabptr_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;
  return o;
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConversionWithValueErrorMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionAlternative(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)o);
  p->converter = Py_None; Py_INCREF(Py_None);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionAlternative(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->converter);
  Py_CLEAR(p->method);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionAlternative(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)o;
  if (p->converter) {
    e = (*v)(p->converter, a); if (e) return e;
  }
  if (p->method) {
    e = (*v)(((PyObject *)p->method), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionAlternative(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative *)o;
  tmp = ((PyObject*)p->converter);
  p->converter = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->method);
  p->method = ((struct __pyx_obj_9apischema_15deserialization_7methods_DeserializationMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_converter(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_9converter_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_6method_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_value_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_11value_error_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConversionAlternative[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConversionAlternative[] = {
  {(char *)"converter", __pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_converter, 0, (char *)0, 0},
  {(char *)"method", __pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_method, 0, (char *)0, 0},
  {(char *)"value_error", __pyx_getprop_9apischema_15deserialization_7methods_21ConversionAlternative_value_error, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConversionAlternative = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConversionAlternative", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionAlternative), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_21ConversionAlternative_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConversionAlternative, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_ConversionUnionMethod __pyx_vtable_9apischema_15deserialization_7methods_ConversionUnionMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_ConversionUnionMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionUnionMethod;
  p->alternatives = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionUnionMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->alternatives);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionUnionMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionUnionMethod)); if (e) return e;
  if (p->alternatives) {
    e = (*v)(p->alternatives, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionUnionMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionUnionMethod);
  tmp = ((PyObject*)p->alternatives);
  p->alternatives = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_21ConversionUnionMethod_alternatives(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_12alternatives_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_ConversionUnionMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_ConversionUnionMethod[] = {
  {(char *)"alternatives", __pyx_getprop_9apischema_15deserialization_7methods_21ConversionUnionMethod_alternatives, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.ConversionUnionMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_21ConversionUnionMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_ConversionUnionMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};
static struct __pyx_vtabstruct_9apischema_15deserialization_7methods_DiscriminatorMethod __pyx_vtable_9apischema_15deserialization_7methods_DiscriminatorMethod;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods_DiscriminatorMethod(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *p;
  PyObject *o = __pyx_tp_new_9apischema_15deserialization_7methods_DeserializationMethod(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)o);
  p->__pyx_vtab = __pyx_vtabptr_9apischema_15deserialization_7methods_DiscriminatorMethod;
  p->alias = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->mapping = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->missing = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->error = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods_DiscriminatorMethod(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->alias);
  Py_CLEAR(p->mapping);
  Py_CLEAR(p->missing);
  Py_CLEAR(p->error);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DeserializationMethod(o);
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods_DiscriminatorMethod(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)o;
  e = ((likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) ? ((__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse) ? __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_9apischema_15deserialization_7methods_DiscriminatorMethod)); if (e) return e;
  if (p->mapping) {
    e = (*v)(p->mapping, a); if (e) return e;
  }
  if (p->error) {
    e = (*v)(p->error, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods_DiscriminatorMethod(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *p = (struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *)o;
  if (likely(__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod)) { if (__pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear) __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_9apischema_15deserialization_7methods_DiscriminatorMethod);
  tmp = ((PyObject*)p->mapping);
  p->mapping = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->error);
  p->error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_alias(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5alias_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_mapping(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7mapping_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_missing(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7missing_1__get__(o);
}

static PyObject *__pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5error_1__get__(o);
}

static PyMethodDef __pyx_methods_9apischema_15deserialization_7methods_DiscriminatorMethod[] = {
  {"deserialize", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_1deserialize, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_9apischema_15deserialization_7methods_DiscriminatorMethod[] = {
  {(char *)"alias", __pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_alias, 0, (char *)0, 0},
  {(char *)"mapping", __pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_mapping, 0, (char *)0, 0},
  {(char *)"missing", __pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_missing, 0, (char *)0, 0},
  {(char *)"error", __pyx_getprop_9apischema_15deserialization_7methods_19DiscriminatorMethod_error, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.DiscriminatorMethod", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_9apischema_15deserialization_7methods_19DiscriminatorMethod_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods_DiscriminatorMethod, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *__pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize[8];
static int __pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize = 0;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize)))) {
    o = (PyObject*)__pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize[--__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize];
    memset(o, 0, sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *p = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_data);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize)))) {
    __pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize[__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize++] = ((struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *p = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)o;
  if (p->__pyx_v_data) {
    e = (*v)(p->__pyx_v_data, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *p = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize *)o;
  tmp = ((PyObject*)p->__pyx_v_data);
  p->__pyx_v_data = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.__pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize, /*tp_traverse*/
  __pyx_tp_clear_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *__pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr[8];
static int __pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr = 0;

static PyObject *__pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr)))) {
    o = (PyObject*)__pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr[--__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr(PyObject *o) {
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_cls);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr)))) {
    __pyx_freelist_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr[__pyx_freecount_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_cls) {
    e = (*v)(p->__pyx_v_cls, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "apischema.deserialization.methods.__pyx_scope_struct_1_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
  0, /*tp_pypy_flags*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {"to_hashable", (PyCFunction)__pyx_pw_9apischema_15deserialization_7methods_1to_hashable, METH_O, 0},
  {"format_error", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_3format_error, METH_VARARGS|METH_KEYWORDS, 0},
  {"validate_constraints", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_5validate_constraints, METH_VARARGS|METH_KEYWORDS, 0},
  {"set_child_error", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_7set_child_error, METH_VARARGS|METH_KEYWORDS, 0},
  {"extend_errors", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_9extend_errors, METH_VARARGS|METH_KEYWORDS, 0},
  {"update_children_errors", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9apischema_15deserialization_7methods_11update_children_errors, METH_VARARGS|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_methods(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_methods},
  {0, NULL}
};
#endif

static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    "methods",
    0, /* m_doc */
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    0, /* m_size */
  #else
    -1, /* m_size */
  #endif
    __pyx_methods /* m_methods */,
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    __pyx_moduledef_slots, /* m_slots */
  #else
    NULL, /* m_reload */
  #endif
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
  {&__pyx_n_s_AbstractSet, __pyx_k_AbstractSet, sizeof(__pyx_k_AbstractSet), 0, 0, 1, 1},
  {&__pyx_n_s_AdditionalField, __pyx_k_AdditionalField, sizeof(__pyx_k_AdditionalField), 0, 0, 1, 1},
  {&__pyx_n_s_Aliaser, __pyx_k_Aliaser, sizeof(__pyx_k_Aliaser), 0, 0, 1, 1},
  {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1},
  {&__pyx_n_s_AnyMethod, __pyx_k_AnyMethod, sizeof(__pyx_k_AnyMethod), 0, 0, 1, 1},
  {&__pyx_n_s_AnyType, __pyx_k_AnyType, sizeof(__pyx_k_AnyType), 0, 0, 1, 1},
  {&__pyx_n_s_BoolMethod, __pyx_k_BoolMethod, sizeof(__pyx_k_BoolMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Callable, __pyx_k_Callable, sizeof(__pyx_k_Callable), 0, 0, 1, 1},
  {&__pyx_n_s_Coercer, __pyx_k_Coercer, sizeof(__pyx_k_Coercer), 0, 0, 1, 1},
  {&__pyx_n_s_CoercerMethod, __pyx_k_CoercerMethod, sizeof(__pyx_k_CoercerMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ConstrainedFloatMethod, __pyx_k_ConstrainedFloatMethod, sizeof(__pyx_k_ConstrainedFloatMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ConstrainedIntMethod, __pyx_k_ConstrainedIntMethod, sizeof(__pyx_k_ConstrainedIntMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ConstrainedStrMethod, __pyx_k_ConstrainedStrMethod, sizeof(__pyx_k_ConstrainedStrMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Constraint, __pyx_k_Constraint, sizeof(__pyx_k_Constraint), 0, 0, 1, 1},
  {&__pyx_n_s_Constructor, __pyx_k_Constructor, sizeof(__pyx_k_Constructor), 0, 0, 1, 1},
  {&__pyx_n_s_ConversionAlternative, __pyx_k_ConversionAlternative, sizeof(__pyx_k_ConversionAlternative), 0, 0, 1, 1},
  {&__pyx_n_s_ConversionMethod, __pyx_k_ConversionMethod, sizeof(__pyx_k_ConversionMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ConversionUnionMethod, __pyx_k_ConversionUnionMethod, sizeof(__pyx_k_ConversionUnionMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ConversionWithValueErrorMethod, __pyx_k_ConversionWithValueErrorMethod, sizeof(__pyx_k_ConversionWithValueErrorMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Converter, __pyx_k_Converter, sizeof(__pyx_k_Converter), 0, 0, 1, 1},
  {&__pyx_n_s_DefaultField, __pyx_k_DefaultField, sizeof(__pyx_k_DefaultField), 0, 0, 1, 1},
  {&__pyx_n_s_DeserializationMethod, __pyx_k_DeserializationMethod, sizeof(__pyx_k_DeserializationMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Dict, __pyx_k_Dict, sizeof(__pyx_k_Dict), 0, 0, 1, 1},
  {&__pyx_n_s_DiscriminatorMethod, __pyx_k_DiscriminatorMethod, sizeof(__pyx_k_DiscriminatorMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ErrorKey, __pyx_k_ErrorKey, sizeof(__pyx_k_ErrorKey), 0, 0, 1, 1},
  {&__pyx_n_s_ErrorMsg, __pyx_k_ErrorMsg, sizeof(__pyx_k_ErrorMsg), 0, 0, 1, 1},
  {&__pyx_n_s_ExclusiveMaximumConstraint, __pyx_k_ExclusiveMaximumConstraint, sizeof(__pyx_k_ExclusiveMaximumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_ExclusiveMinimumConstraint, __pyx_k_ExclusiveMinimumConstraint, sizeof(__pyx_k_ExclusiveMinimumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_FactoryField, __pyx_k_FactoryField, sizeof(__pyx_k_FactoryField), 0, 0, 1, 1},
  {&__pyx_n_s_Field, __pyx_k_Field, sizeof(__pyx_k_Field), 0, 0, 1, 1},
  {&__pyx_n_s_FieldsConstructor, __pyx_k_FieldsConstructor, sizeof(__pyx_k_FieldsConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_FlattenedField, __pyx_k_FlattenedField, sizeof(__pyx_k_FlattenedField), 0, 0, 1, 1},
  {&__pyx_n_s_FloatMethod, __pyx_k_FloatMethod, sizeof(__pyx_k_FloatMethod), 0, 0, 1, 1},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_k_Incompatible_checksums_s_vs_0x05, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x05), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x0a, __pyx_k_Incompatible_checksums_s_vs_0x0a, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x0a), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x1c, __pyx_k_Incompatible_checksums_s_vs_0x1c, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x1c), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x1d, __pyx_k_Incompatible_checksums_s_vs_0x1d, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x1d), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x29, __pyx_k_Incompatible_checksums_s_vs_0x29, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x29), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x30, __pyx_k_Incompatible_checksums_s_vs_0x30, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x30), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x40, __pyx_k_Incompatible_checksums_s_vs_0x40, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x40), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x4c, __pyx_k_Incompatible_checksums_s_vs_0x4c, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x4c), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x52, __pyx_k_Incompatible_checksums_s_vs_0x52, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x52), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x53, __pyx_k_Incompatible_checksums_s_vs_0x53, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x53), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x54, __pyx_k_Incompatible_checksums_s_vs_0x54, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x54), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x55, __pyx_k_Incompatible_checksums_s_vs_0x55, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x55), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x55_2, __pyx_k_Incompatible_checksums_s_vs_0x55_2, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x55_2), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x60, __pyx_k_Incompatible_checksums_s_vs_0x60, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x60), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x64, __pyx_k_Incompatible_checksums_s_vs_0x64, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x64), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x67, __pyx_k_Incompatible_checksums_s_vs_0x67, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x67), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x68, __pyx_k_Incompatible_checksums_s_vs_0x68, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x68), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x69, __pyx_k_Incompatible_checksums_s_vs_0x69, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x69), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x71, __pyx_k_Incompatible_checksums_s_vs_0x71, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x71), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x72, __pyx_k_Incompatible_checksums_s_vs_0x72, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x72), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x72_2, __pyx_k_Incompatible_checksums_s_vs_0x72_2, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x72_2), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x7a, __pyx_k_Incompatible_checksums_s_vs_0x7a, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x7a), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x7b, __pyx_k_Incompatible_checksums_s_vs_0x7b, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x7b), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x83, __pyx_k_Incompatible_checksums_s_vs_0x83, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x83), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x86, __pyx_k_Incompatible_checksums_s_vs_0x86, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x86), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x90, __pyx_k_Incompatible_checksums_s_vs_0x90, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x90), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x92, __pyx_k_Incompatible_checksums_s_vs_0x92, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x92), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0x97, __pyx_k_Incompatible_checksums_s_vs_0x97, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x97), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xa6, __pyx_k_Incompatible_checksums_s_vs_0xa6, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xa6), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xaa, __pyx_k_Incompatible_checksums_s_vs_0xaa, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xaa), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb3, __pyx_k_Incompatible_checksums_s_vs_0xb3, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb3), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xc8, __pyx_k_Incompatible_checksums_s_vs_0xc8, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xc8), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xcf, __pyx_k_Incompatible_checksums_s_vs_0xcf, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xcf), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd1, __pyx_k_Incompatible_checksums_s_vs_0xd1, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd1), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd9, __pyx_k_Incompatible_checksums_s_vs_0xd9, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd9), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xe6, __pyx_k_Incompatible_checksums_s_vs_0xe6, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xe6), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xe7, __pyx_k_Incompatible_checksums_s_vs_0xe7, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xe7), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xef, __pyx_k_Incompatible_checksums_s_vs_0xef, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xef), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xf6, __pyx_k_Incompatible_checksums_s_vs_0xf6, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xf6), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xf9, __pyx_k_Incompatible_checksums_s_vs_0xf9, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xf9), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xfa, __pyx_k_Incompatible_checksums_s_vs_0xfa, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xfa), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xfe, __pyx_k_Incompatible_checksums_s_vs_0xfe, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xfe), 0, 0, 1, 0},
  {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
  {&__pyx_n_s_IntMethod, __pyx_k_IntMethod, sizeof(__pyx_k_IntMethod), 0, 0, 1, 1},
  {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
  {&__pyx_n_s_Lazy, __pyx_k_Lazy, sizeof(__pyx_k_Lazy), 0, 0, 1, 1},
  {&__pyx_n_s_List, __pyx_k_List, sizeof(__pyx_k_List), 0, 0, 1, 1},
  {&__pyx_n_s_ListCheckOnlyMethod, __pyx_k_ListCheckOnlyMethod, sizeof(__pyx_k_ListCheckOnlyMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ListMethod, __pyx_k_ListMethod, sizeof(__pyx_k_ListMethod), 0, 0, 1, 1},
  {&__pyx_n_s_LiteralMethod, __pyx_k_LiteralMethod, sizeof(__pyx_k_LiteralMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Mapping, __pyx_k_Mapping, sizeof(__pyx_k_Mapping), 0, 0, 1, 1},
  {&__pyx_n_s_MappingCheckOnly, __pyx_k_MappingCheckOnly, sizeof(__pyx_k_MappingCheckOnly), 0, 0, 1, 1},
  {&__pyx_n_s_MappingMethod, __pyx_k_MappingMethod, sizeof(__pyx_k_MappingMethod), 0, 0, 1, 1},
  {&__pyx_n_s_MaxItemsConstraint, __pyx_k_MaxItemsConstraint, sizeof(__pyx_k_MaxItemsConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MaxLengthConstraint, __pyx_k_MaxLengthConstraint, sizeof(__pyx_k_MaxLengthConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MaxPropertiesConstraint, __pyx_k_MaxPropertiesConstraint, sizeof(__pyx_k_MaxPropertiesConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MaximumConstraint, __pyx_k_MaximumConstraint, sizeof(__pyx_k_MaximumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MinItemsConstraint, __pyx_k_MinItemsConstraint, sizeof(__pyx_k_MinItemsConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MinLengthConstraint, __pyx_k_MinLengthConstraint, sizeof(__pyx_k_MinLengthConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MinPropertiesConstraint, __pyx_k_MinPropertiesConstraint, sizeof(__pyx_k_MinPropertiesConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MinimumConstraint, __pyx_k_MinimumConstraint, sizeof(__pyx_k_MinimumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_MultipleOfConstraint, __pyx_k_MultipleOfConstraint, sizeof(__pyx_k_MultipleOfConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_NoConstructor, __pyx_k_NoConstructor, sizeof(__pyx_k_NoConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_NoneMethod, __pyx_k_NoneMethod, sizeof(__pyx_k_NoneMethod), 0, 0, 1, 1},
  {&__pyx_n_s_NoneType, __pyx_k_NoneType, sizeof(__pyx_k_NoneType), 0, 0, 1, 1},
  {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
  {&__pyx_n_s_ObjectMethod, __pyx_k_ObjectMethod, sizeof(__pyx_k_ObjectMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Optional, __pyx_k_Optional, sizeof(__pyx_k_Optional), 0, 0, 1, 1},
  {&__pyx_n_s_OptionalMethod, __pyx_k_OptionalMethod, sizeof(__pyx_k_OptionalMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Pattern, __pyx_k_Pattern, sizeof(__pyx_k_Pattern), 0, 0, 1, 1},
  {&__pyx_n_s_PatternConstraint, __pyx_k_PatternConstraint, sizeof(__pyx_k_PatternConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_PatternField, __pyx_k_PatternField, sizeof(__pyx_k_PatternField), 0, 0, 1, 1},
  {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
  {&__pyx_n_s_RawConstructor, __pyx_k_RawConstructor, sizeof(__pyx_k_RawConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_RecMethod, __pyx_k_RecMethod, sizeof(__pyx_k_RecMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1},
  {&__pyx_n_s_SetMethod, __pyx_k_SetMethod, sizeof(__pyx_k_SetMethod), 0, 0, 1, 1},
  {&__pyx_n_s_SimpleObjectMethod, __pyx_k_SimpleObjectMethod, sizeof(__pyx_k_SimpleObjectMethod), 0, 0, 1, 1},
  {&__pyx_n_s_StrMethod, __pyx_k_StrMethod, sizeof(__pyx_k_StrMethod), 0, 0, 1, 1},
  {&__pyx_n_s_SubprimitiveMethod, __pyx_k_SubprimitiveMethod, sizeof(__pyx_k_SubprimitiveMethod), 0, 0, 1, 1},
  {&__pyx_n_s_Tuple, __pyx_k_Tuple, sizeof(__pyx_k_Tuple), 0, 0, 1, 1},
  {&__pyx_n_s_TupleMethod, __pyx_k_TupleMethod, sizeof(__pyx_k_TupleMethod), 0, 0, 1, 1},
  {&__pyx_n_s_TypeCheckMethod, __pyx_k_TypeCheckMethod, sizeof(__pyx_k_TypeCheckMethod), 0, 0, 1, 1},
  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
  {&__pyx_n_s_Union, __pyx_k_Union, sizeof(__pyx_k_Union), 0, 0, 1, 1},
  {&__pyx_n_s_UnionByTypeMethod, __pyx_k_UnionByTypeMethod, sizeof(__pyx_k_UnionByTypeMethod), 0, 0, 1, 1},
  {&__pyx_n_s_UnionByTypeMethod_deserialize_lo, __pyx_k_UnionByTypeMethod_deserialize_lo, sizeof(__pyx_k_UnionByTypeMethod_deserialize_lo), 0, 0, 1, 1},
  {&__pyx_n_s_UnionMethod, __pyx_k_UnionMethod, sizeof(__pyx_k_UnionMethod), 0, 0, 1, 1},
  {&__pyx_n_s_UniqueItemsConstraint, __pyx_k_UniqueItemsConstraint, sizeof(__pyx_k_UniqueItemsConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_ValidationError, __pyx_k_ValidationError, sizeof(__pyx_k_ValidationError), 0, 0, 1, 1},
  {&__pyx_n_s_Validator, __pyx_k_Validator, sizeof(__pyx_k_Validator), 0, 0, 1, 1},
  {&__pyx_n_s_ValidatorMethod, __pyx_k_ValidatorMethod, sizeof(__pyx_k_ValidatorMethod), 0, 0, 1, 1},
  {&__pyx_n_s_ValidatorMock, __pyx_k_ValidatorMock, sizeof(__pyx_k_ValidatorMock), 0, 0, 1, 1},
  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
  {&__pyx_n_s_VariadicTupleMethod, __pyx_k_VariadicTupleMethod, sizeof(__pyx_k_VariadicTupleMethod), 0, 0, 1, 1},
  {&__pyx_n_s_additional_field, __pyx_k_additional_field, sizeof(__pyx_k_additional_field), 0, 0, 1, 1},
  {&__pyx_n_s_additional_properties, __pyx_k_additional_properties, sizeof(__pyx_k_additional_properties), 0, 0, 1, 1},
  {&__pyx_n_s_alias, __pyx_k_alias, sizeof(__pyx_k_alias), 0, 0, 1, 1},
  {&__pyx_n_s_aliaser, __pyx_k_aliaser, sizeof(__pyx_k_aliaser), 0, 0, 1, 1},
  {&__pyx_n_s_aliases, __pyx_k_aliases, sizeof(__pyx_k_aliases), 0, 0, 1, 1},
  {&__pyx_n_s_all_aliases, __pyx_k_all_aliases, sizeof(__pyx_k_all_aliases), 0, 0, 1, 1},
  {&__pyx_n_s_alt_methods, __pyx_k_alt_methods, sizeof(__pyx_k_alt_methods), 0, 0, 1, 1},
  {&__pyx_n_s_alternatives, __pyx_k_alternatives, sizeof(__pyx_k_alternatives), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_aliases, __pyx_k_apischema_aliases, sizeof(__pyx_k_apischema_aliases), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_conversions_utils, __pyx_k_apischema_conversions_utils, sizeof(__pyx_k_apischema_conversions_utils), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_deserialization_coerci, __pyx_k_apischema_deserialization_coerci, sizeof(__pyx_k_apischema_deserialization_coerci), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_deserialization_method, __pyx_k_apischema_deserialization_method, sizeof(__pyx_k_apischema_deserialization_method), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_json_schema_types, __pyx_k_apischema_json_schema_types, sizeof(__pyx_k_apischema_json_schema_types), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_types, __pyx_k_apischema_types, sizeof(__pyx_k_apischema_types), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_utils, __pyx_k_apischema_utils, sizeof(__pyx_k_apischema_utils), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_validation_errors, __pyx_k_apischema_validation_errors, sizeof(__pyx_k_apischema_validation_errors), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_validation_mock, __pyx_k_apischema_validation_mock, sizeof(__pyx_k_apischema_validation_mock), 0, 0, 1, 1},
  {&__pyx_n_s_apischema_validation_validators, __pyx_k_apischema_validation_validators, sizeof(__pyx_k_apischema_validation_validators), 0, 0, 1, 1},
  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
  {&__pyx_n_s_bad_type, __pyx_k_bad_type, sizeof(__pyx_k_bad_type), 0, 0, 1, 1},
  {&__pyx_n_s_children, __pyx_k_children, sizeof(__pyx_k_children), 0, 0, 1, 1},
  {&__pyx_n_s_children_errors, __pyx_k_children_errors, sizeof(__pyx_k_children_errors), 0, 0, 1, 1},
  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
  {&__pyx_n_s_cls, __pyx_k_cls, sizeof(__pyx_k_cls), 0, 0, 1, 1},
  {&__pyx_n_s_coercer, __pyx_k_coercer, sizeof(__pyx_k_coercer), 0, 0, 1, 1},
  {&__pyx_n_s_constraints, __pyx_k_constraints, sizeof(__pyx_k_constraints), 0, 0, 1, 1},
  {&__pyx_n_s_construct, __pyx_k_construct, sizeof(__pyx_k_construct), 0, 0, 1, 1},
  {&__pyx_n_s_constructor, __pyx_k_constructor, sizeof(__pyx_k_constructor), 0, 0, 1, 1},
  {&__pyx_n_s_converter, __pyx_k_converter, sizeof(__pyx_k_converter), 0, 0, 1, 1},
  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
  {&__pyx_n_s_dataclass, __pyx_k_dataclass, sizeof(__pyx_k_dataclass), 0, 0, 1, 1},
  {&__pyx_n_s_dataclasses, __pyx_k_dataclasses, sizeof(__pyx_k_dataclasses), 0, 0, 1, 1},
  {&__pyx_n_s_default_fields, __pyx_k_default_fields, sizeof(__pyx_k_default_fields), 0, 0, 1, 1},
  {&__pyx_n_s_default_value, __pyx_k_default_value, sizeof(__pyx_k_default_value), 0, 0, 1, 1},
  {&__pyx_n_s_dependencies, __pyx_k_dependencies, sizeof(__pyx_k_dependencies), 0, 0, 1, 1},
  {&__pyx_n_s_deserialize, __pyx_k_deserialize, sizeof(__pyx_k_deserialize), 0, 0, 1, 1},
  {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
  {&__pyx_n_s_difference_update, __pyx_k_difference_update, sizeof(__pyx_k_difference_update), 0, 0, 1, 1},
  {&__pyx_n_s_discriminator, __pyx_k_discriminator, sizeof(__pyx_k_discriminator), 0, 0, 1, 1},
  {&__pyx_n_s_elt_methods, __pyx_k_elt_methods, sizeof(__pyx_k_elt_methods), 0, 0, 1, 1},
  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
  {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1},
  {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
  {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1},
  {&__pyx_n_s_exc_max, __pyx_k_exc_max, sizeof(__pyx_k_exc_max), 0, 0, 1, 1},
  {&__pyx_n_s_exc_min, __pyx_k_exc_min, sizeof(__pyx_k_exc_min), 0, 0, 1, 1},
  {&__pyx_n_s_expected, __pyx_k_expected, sizeof(__pyx_k_expected), 0, 0, 1, 1},
  {&__pyx_n_s_extend, __pyx_k_extend, sizeof(__pyx_k_extend), 0, 0, 1, 1},
  {&__pyx_n_s_factory, __pyx_k_factory, sizeof(__pyx_k_factory), 0, 0, 1, 1},
  {&__pyx_n_s_factory_fields, __pyx_k_factory_fields, sizeof(__pyx_k_factory_fields), 0, 0, 1, 1},
  {&__pyx_n_s_fall_back_on_default, __pyx_k_fall_back_on_default, sizeof(__pyx_k_fall_back_on_default), 0, 0, 1, 1},
  {&__pyx_n_s_fallback, __pyx_k_fallback, sizeof(__pyx_k_fallback), 0, 0, 1, 1},
  {&__pyx_n_s_field, __pyx_k_field, sizeof(__pyx_k_field), 0, 0, 1, 1},
  {&__pyx_n_s_fields, __pyx_k_fields, sizeof(__pyx_k_fields), 0, 0, 1, 1},
  {&__pyx_n_s_flattened_fields, __pyx_k_flattened_fields, sizeof(__pyx_k_flattened_fields), 0, 0, 1, 1},
  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
  {&__pyx_n_s_init_defaults, __pyx_k_init_defaults, sizeof(__pyx_k_init_defaults), 0, 0, 1, 1},
  {&__pyx_n_s_isdisjoint, __pyx_k_isdisjoint, sizeof(__pyx_k_isdisjoint), 0, 0, 1, 1},
  {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
  {&__pyx_n_s_key_method, __pyx_k_key_method, sizeof(__pyx_k_key_method), 0, 0, 1, 1},
  {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
  {&__pyx_n_s_lazy, __pyx_k_lazy, sizeof(__pyx_k_lazy), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_map, __pyx_k_map, sizeof(__pyx_k_map), 0, 0, 1, 1},
  {&__pyx_n_s_mapping, __pyx_k_mapping, sizeof(__pyx_k_mapping), 0, 0, 1, 1},
  {&__pyx_n_s_match, __pyx_k_match, sizeof(__pyx_k_match), 0, 0, 1, 1},
  {&__pyx_n_s_max_items, __pyx_k_max_items, sizeof(__pyx_k_max_items), 0, 0, 1, 1},
  {&__pyx_n_s_max_len, __pyx_k_max_len, sizeof(__pyx_k_max_len), 0, 0, 1, 1},
  {&__pyx_n_s_max_len_error, __pyx_k_max_len_error, sizeof(__pyx_k_max_len_error), 0, 0, 1, 1},
  {&__pyx_n_s_max_properties, __pyx_k_max_properties, sizeof(__pyx_k_max_properties), 0, 0, 1, 1},
  {&__pyx_n_s_maximum, __pyx_k_maximum, sizeof(__pyx_k_maximum), 0, 0, 1, 1},
  {&__pyx_n_s_merge_errors, __pyx_k_merge_errors, sizeof(__pyx_k_merge_errors), 0, 0, 1, 1},
  {&__pyx_n_s_messages, __pyx_k_messages, sizeof(__pyx_k_messages), 0, 0, 1, 1},
  {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
  {&__pyx_n_s_method_by_cls, __pyx_k_method_by_cls, sizeof(__pyx_k_method_by_cls), 0, 0, 1, 1},
  {&__pyx_n_s_min_items, __pyx_k_min_items, sizeof(__pyx_k_min_items), 0, 0, 1, 1},
  {&__pyx_n_s_min_len, __pyx_k_min_len, sizeof(__pyx_k_min_len), 0, 0, 1, 1},
  {&__pyx_n_s_min_len_error, __pyx_k_min_len_error, sizeof(__pyx_k_min_len_error), 0, 0, 1, 1},
  {&__pyx_n_s_min_properties, __pyx_k_min_properties, sizeof(__pyx_k_min_properties), 0, 0, 1, 1},
  {&__pyx_n_s_minimum, __pyx_k_minimum, sizeof(__pyx_k_minimum), 0, 0, 1, 1},
  {&__pyx_n_s_missing, __pyx_k_missing, sizeof(__pyx_k_missing), 0, 0, 1, 1},
  {&__pyx_n_s_mult_of, __pyx_k_mult_of, sizeof(__pyx_k_mult_of), 0, 0, 1, 1},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
  {&__pyx_n_s_nb_fields, __pyx_k_nb_fields, sizeof(__pyx_k_nb_fields), 0, 0, 1, 1},
  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
  {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
  {&__pyx_n_s_pattern, __pyx_k_pattern, sizeof(__pyx_k_pattern), 0, 0, 1, 1},
  {&__pyx_n_s_pattern_fields, __pyx_k_pattern_fields, sizeof(__pyx_k_pattern_fields), 0, 0, 1, 1},
  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
  {&__pyx_n_s_post_init_modified, __pyx_k_post_init_modified, sizeof(__pyx_k_post_init_modified), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_AdditionalField, __pyx_k_pyx_unpickle_AdditionalField, sizeof(__pyx_k_pyx_unpickle_AdditionalField), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_AnyMethod, __pyx_k_pyx_unpickle_AnyMethod, sizeof(__pyx_k_pyx_unpickle_AnyMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_BoolMethod, __pyx_k_pyx_unpickle_BoolMethod, sizeof(__pyx_k_pyx_unpickle_BoolMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_CoercerMethod, __pyx_k_pyx_unpickle_CoercerMethod, sizeof(__pyx_k_pyx_unpickle_CoercerMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConstrainedFloatM, __pyx_k_pyx_unpickle_ConstrainedFloatM, sizeof(__pyx_k_pyx_unpickle_ConstrainedFloatM), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConstrainedIntMet, __pyx_k_pyx_unpickle_ConstrainedIntMet, sizeof(__pyx_k_pyx_unpickle_ConstrainedIntMet), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConstrainedStrMet, __pyx_k_pyx_unpickle_ConstrainedStrMet, sizeof(__pyx_k_pyx_unpickle_ConstrainedStrMet), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_Constraint, __pyx_k_pyx_unpickle_Constraint, sizeof(__pyx_k_pyx_unpickle_Constraint), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_Constructor, __pyx_k_pyx_unpickle_Constructor, sizeof(__pyx_k_pyx_unpickle_Constructor), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConversionAlterna, __pyx_k_pyx_unpickle_ConversionAlterna, sizeof(__pyx_k_pyx_unpickle_ConversionAlterna), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConversionMethod, __pyx_k_pyx_unpickle_ConversionMethod, sizeof(__pyx_k_pyx_unpickle_ConversionMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConversionUnionMe, __pyx_k_pyx_unpickle_ConversionUnionMe, sizeof(__pyx_k_pyx_unpickle_ConversionUnionMe), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ConversionWithVal, __pyx_k_pyx_unpickle_ConversionWithVal, sizeof(__pyx_k_pyx_unpickle_ConversionWithVal), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_DefaultField, __pyx_k_pyx_unpickle_DefaultField, sizeof(__pyx_k_pyx_unpickle_DefaultField), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_DeserializationMe, __pyx_k_pyx_unpickle_DeserializationMe, sizeof(__pyx_k_pyx_unpickle_DeserializationMe), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_DiscriminatorMeth, __pyx_k_pyx_unpickle_DiscriminatorMeth, sizeof(__pyx_k_pyx_unpickle_DiscriminatorMeth), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ExclusiveMaximumC, __pyx_k_pyx_unpickle_ExclusiveMaximumC, sizeof(__pyx_k_pyx_unpickle_ExclusiveMaximumC), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ExclusiveMinimumC, __pyx_k_pyx_unpickle_ExclusiveMinimumC, sizeof(__pyx_k_pyx_unpickle_ExclusiveMinimumC), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_FactoryField, __pyx_k_pyx_unpickle_FactoryField, sizeof(__pyx_k_pyx_unpickle_FactoryField), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_Field, __pyx_k_pyx_unpickle_Field, sizeof(__pyx_k_pyx_unpickle_Field), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_FieldsConstructor, __pyx_k_pyx_unpickle_FieldsConstructor, sizeof(__pyx_k_pyx_unpickle_FieldsConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_FlattenedField, __pyx_k_pyx_unpickle_FlattenedField, sizeof(__pyx_k_pyx_unpickle_FlattenedField), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_FloatMethod, __pyx_k_pyx_unpickle_FloatMethod, sizeof(__pyx_k_pyx_unpickle_FloatMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_IntMethod, __pyx_k_pyx_unpickle_IntMethod, sizeof(__pyx_k_pyx_unpickle_IntMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ListCheckOnlyMeth, __pyx_k_pyx_unpickle_ListCheckOnlyMeth, sizeof(__pyx_k_pyx_unpickle_ListCheckOnlyMeth), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ListMethod, __pyx_k_pyx_unpickle_ListMethod, sizeof(__pyx_k_pyx_unpickle_ListMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_LiteralMethod, __pyx_k_pyx_unpickle_LiteralMethod, sizeof(__pyx_k_pyx_unpickle_LiteralMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MappingCheckOnly, __pyx_k_pyx_unpickle_MappingCheckOnly, sizeof(__pyx_k_pyx_unpickle_MappingCheckOnly), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MappingMethod, __pyx_k_pyx_unpickle_MappingMethod, sizeof(__pyx_k_pyx_unpickle_MappingMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MaxItemsConstrain, __pyx_k_pyx_unpickle_MaxItemsConstrain, sizeof(__pyx_k_pyx_unpickle_MaxItemsConstrain), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MaxLengthConstrai, __pyx_k_pyx_unpickle_MaxLengthConstrai, sizeof(__pyx_k_pyx_unpickle_MaxLengthConstrai), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MaxPropertiesCons, __pyx_k_pyx_unpickle_MaxPropertiesCons, sizeof(__pyx_k_pyx_unpickle_MaxPropertiesCons), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MaximumConstraint, __pyx_k_pyx_unpickle_MaximumConstraint, sizeof(__pyx_k_pyx_unpickle_MaximumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MinItemsConstrain, __pyx_k_pyx_unpickle_MinItemsConstrain, sizeof(__pyx_k_pyx_unpickle_MinItemsConstrain), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MinLengthConstrai, __pyx_k_pyx_unpickle_MinLengthConstrai, sizeof(__pyx_k_pyx_unpickle_MinLengthConstrai), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MinPropertiesCons, __pyx_k_pyx_unpickle_MinPropertiesCons, sizeof(__pyx_k_pyx_unpickle_MinPropertiesCons), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MinimumConstraint, __pyx_k_pyx_unpickle_MinimumConstraint, sizeof(__pyx_k_pyx_unpickle_MinimumConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_MultipleOfConstra, __pyx_k_pyx_unpickle_MultipleOfConstra, sizeof(__pyx_k_pyx_unpickle_MultipleOfConstra), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_NoConstructor, __pyx_k_pyx_unpickle_NoConstructor, sizeof(__pyx_k_pyx_unpickle_NoConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_NoneMethod, __pyx_k_pyx_unpickle_NoneMethod, sizeof(__pyx_k_pyx_unpickle_NoneMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ObjectMethod, __pyx_k_pyx_unpickle_ObjectMethod, sizeof(__pyx_k_pyx_unpickle_ObjectMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_OptionalMethod, __pyx_k_pyx_unpickle_OptionalMethod, sizeof(__pyx_k_pyx_unpickle_OptionalMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_PatternConstraint, __pyx_k_pyx_unpickle_PatternConstraint, sizeof(__pyx_k_pyx_unpickle_PatternConstraint), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_PatternField, __pyx_k_pyx_unpickle_PatternField, sizeof(__pyx_k_pyx_unpickle_PatternField), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_RawConstructor, __pyx_k_pyx_unpickle_RawConstructor, sizeof(__pyx_k_pyx_unpickle_RawConstructor), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_RecMethod, __pyx_k_pyx_unpickle_RecMethod, sizeof(__pyx_k_pyx_unpickle_RecMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_SetMethod, __pyx_k_pyx_unpickle_SetMethod, sizeof(__pyx_k_pyx_unpickle_SetMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_SimpleObjectMetho, __pyx_k_pyx_unpickle_SimpleObjectMetho, sizeof(__pyx_k_pyx_unpickle_SimpleObjectMetho), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_StrMethod, __pyx_k_pyx_unpickle_StrMethod, sizeof(__pyx_k_pyx_unpickle_StrMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_SubprimitiveMetho, __pyx_k_pyx_unpickle_SubprimitiveMetho, sizeof(__pyx_k_pyx_unpickle_SubprimitiveMetho), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_TupleMethod, __pyx_k_pyx_unpickle_TupleMethod, sizeof(__pyx_k_pyx_unpickle_TupleMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_TypeCheckMethod, __pyx_k_pyx_unpickle_TypeCheckMethod, sizeof(__pyx_k_pyx_unpickle_TypeCheckMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_UnionByTypeMethod, __pyx_k_pyx_unpickle_UnionByTypeMethod, sizeof(__pyx_k_pyx_unpickle_UnionByTypeMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_UnionMethod, __pyx_k_pyx_unpickle_UnionMethod, sizeof(__pyx_k_pyx_unpickle_UnionMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_UniqueItemsConstr, __pyx_k_pyx_unpickle_UniqueItemsConstr, sizeof(__pyx_k_pyx_unpickle_UniqueItemsConstr), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ValidatorMethod, __pyx_k_pyx_unpickle_ValidatorMethod, sizeof(__pyx_k_pyx_unpickle_ValidatorMethod), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_VariadicTupleMeth, __pyx_k_pyx_unpickle_VariadicTupleMeth, sizeof(__pyx_k_pyx_unpickle_VariadicTupleMeth), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
  {&__pyx_n_s_required, __pyx_k_required, sizeof(__pyx_k_required), 0, 0, 1, 1},
  {&__pyx_n_s_required_by, __pyx_k_required_by, sizeof(__pyx_k_required_by), 0, 0, 1, 1},
  {&__pyx_kp_u_required_by_2, __pyx_k_required_by_2, sizeof(__pyx_k_required_by_2), 0, 1, 0, 0},
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
  {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
  {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
  {&__pyx_n_s_to_hashable, __pyx_k_to_hashable, sizeof(__pyx_k_to_hashable), 0, 0, 1, 1},
  {&__pyx_n_s_typed_dict, __pyx_k_typed_dict, sizeof(__pyx_k_typed_dict), 0, 0, 1, 1},
  {&__pyx_n_s_types, __pyx_k_types, sizeof(__pyx_k_types), 0, 0, 1, 1},
  {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1},
  {&__pyx_n_s_unexpected, __pyx_k_unexpected, sizeof(__pyx_k_unexpected), 0, 0, 1, 1},
  {&__pyx_n_s_unique, __pyx_k_unique, sizeof(__pyx_k_unique), 0, 0, 1, 1},
  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
  {&__pyx_n_s_validate, __pyx_k_validate, sizeof(__pyx_k_validate), 0, 0, 1, 1},
  {&__pyx_n_s_validators, __pyx_k_validators, sizeof(__pyx_k_validators), 0, 0, 1, 1},
  {&__pyx_n_s_value_error, __pyx_k_value_error, sizeof(__pyx_k_value_error), 0, 0, 1, 1},
  {&__pyx_n_s_value_map, __pyx_k_value_map, sizeof(__pyx_k_value_map), 0, 0, 1, 1},
  {&__pyx_n_s_value_method, __pyx_k_value_method, sizeof(__pyx_k_value_method), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 701, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 712, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 813, __pyx_L1_error)
  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 855, __pyx_L1_error)
  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 860, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 863, __pyx_L1_error)
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 1127, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 1178, __pyx_L1_error)
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 1228, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "(tree fragment)":1
 * def __pyx_unpickle_Constraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_tuple__2 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);
  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Constraint, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__4 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);
  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MinimumConstraint, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__6 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);
  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MaximumConstraint, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__8 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);
  __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ExclusiveMinimumC, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__10 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);
  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ExclusiveMaximumC, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__12 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);
  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MultipleOfConstra, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__14 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);
  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MinLengthConstrai, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__16 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);
  __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MaxLengthConstrai, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__18 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
  __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PatternConstraint, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__20 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);
  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MinItemsConstrain, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__22 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);
  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MaxItemsConstrain, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__24 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);
  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_UniqueItemsConstr, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__26 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);
  __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MinPropertiesCons, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__28 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);
  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MaxPropertiesCons, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_DeserializationMe, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RecMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);
  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ValidatorMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);
  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_CoercerMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__38 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);
  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_TypeCheckMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__40 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);
  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_AnyMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);
  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ListCheckOnlyMeth, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__44 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);
  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ListMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__46 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);
  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SetMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__48 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);
  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_VariadicTupleMeth, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__50 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);
  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_LiteralMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);
  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MappingCheckOnly, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__54 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);
  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_MappingMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__56 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);
  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Field, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__58 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);
  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FlattenedField, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__60 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);
  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PatternField, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__62 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);
  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_AdditionalField, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__64 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);
  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Constructor, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__66 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__66);
  __Pyx_GIVEREF(__pyx_tuple__66);
  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_NoConstructor, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__68 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);
  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RawConstructor, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__70 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);
  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_DefaultField, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__72 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);
  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FactoryField, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__74 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);
  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FieldsConstructor, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__76 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);
  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SimpleObjectMetho, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__78 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);
  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ObjectMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__80 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__80);
  __Pyx_GIVEREF(__pyx_tuple__80);
  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_NoneMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__82 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__82);
  __Pyx_GIVEREF(__pyx_tuple__82);
  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_IntMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__84 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__84);
  __Pyx_GIVEREF(__pyx_tuple__84);
  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FloatMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__86 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);
  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_StrMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__88 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__88);
  __Pyx_GIVEREF(__pyx_tuple__88);
  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_BoolMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__90 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);
  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConstrainedIntMet, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__92 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);
  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConstrainedFloatM, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__94 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);
  __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConstrainedStrMet, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__96 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__96);
  __Pyx_GIVEREF(__pyx_tuple__96);
  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SubprimitiveMetho, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__98 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__98);
  __Pyx_GIVEREF(__pyx_tuple__98);
  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_TupleMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__100 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);
  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_OptionalMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__102 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__102);
  __Pyx_GIVEREF(__pyx_tuple__102);
  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_UnionByTypeMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__104 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__104);
  __Pyx_GIVEREF(__pyx_tuple__104);
  __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_UnionMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__106 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__106);
  __Pyx_GIVEREF(__pyx_tuple__106);
  __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__106, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConversionMethod, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__108 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__108);
  __Pyx_GIVEREF(__pyx_tuple__108);
  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConversionWithVal, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__110 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__110);
  __Pyx_GIVEREF(__pyx_tuple__110);
  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConversionAlterna, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__112 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__112);
  __Pyx_GIVEREF(__pyx_tuple__112);
  __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConversionUnionMe, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(1, 1, __pyx_L1_error)
  __pyx_tuple__114 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__114);
  __Pyx_GIVEREF(__pyx_tuple__114);
  __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_DiscriminatorMeth, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_update.type = (PyObject*)&PyDict_Type;
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_5409203 = PyInt_FromLong(5409203L); if (unlikely(!__pyx_int_5409203)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_10534196 = PyInt_FromLong(10534196L); if (unlikely(!__pyx_int_10534196)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_30346496 = PyInt_FromLong(30346496L); if (unlikely(!__pyx_int_30346496)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_31099836 = PyInt_FromLong(31099836L); if (unlikely(!__pyx_int_31099836)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_43145208 = PyInt_FromLong(43145208L); if (unlikely(!__pyx_int_43145208)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_50548289 = PyInt_FromLong(50548289L); if (unlikely(!__pyx_int_50548289)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_67187364 = PyInt_FromLong(67187364L); if (unlikely(!__pyx_int_67187364)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_79953799 = PyInt_FromLong(79953799L); if (unlikely(!__pyx_int_79953799)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_86498115 = PyInt_FromLong(86498115L); if (unlikely(!__pyx_int_86498115)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_87055098 = PyInt_FromLong(87055098L); if (unlikely(!__pyx_int_87055098)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_89106541 = PyInt_FromLong(89106541L); if (unlikely(!__pyx_int_89106541)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_89247923 = PyInt_FromLong(89247923L); if (unlikely(!__pyx_int_89247923)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_89365892 = PyInt_FromLong(89365892L); if (unlikely(!__pyx_int_89365892)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_100986846 = PyInt_FromLong(100986846L); if (unlikely(!__pyx_int_100986846)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_105653666 = PyInt_FromLong(105653666L); if (unlikely(!__pyx_int_105653666)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_108544010 = PyInt_FromLong(108544010L); if (unlikely(!__pyx_int_108544010)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_109504843 = PyInt_FromLong(109504843L); if (unlikely(!__pyx_int_109504843)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_110427570 = PyInt_FromLong(110427570L); if (unlikely(!__pyx_int_110427570)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_119135242 = PyInt_FromLong(119135242L); if (unlikely(!__pyx_int_119135242)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_119633667 = PyInt_FromLong(119633667L); if (unlikely(!__pyx_int_119633667)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_119948357 = PyInt_FromLong(119948357L); if (unlikely(!__pyx_int_119948357)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_128527296 = PyInt_FromLong(128527296L); if (unlikely(!__pyx_int_128527296)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_129754538 = PyInt_FromLong(129754538L); if (unlikely(!__pyx_int_129754538)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_138368889 = PyInt_FromLong(138368889L); if (unlikely(!__pyx_int_138368889)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_141271449 = PyInt_FromLong(141271449L); if (unlikely(!__pyx_int_141271449)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_151978152 = PyInt_FromLong(151978152L); if (unlikely(!__pyx_int_151978152)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_153188860 = PyInt_FromLong(153188860L); if (unlikely(!__pyx_int_153188860)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_159314353 = PyInt_FromLong(159314353L); if (unlikely(!__pyx_int_159314353)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_174143295 = PyInt_FromLong(174143295L); if (unlikely(!__pyx_int_174143295)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_179286492 = PyInt_FromLong(179286492L); if (unlikely(!__pyx_int_179286492)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_185544032 = PyInt_FromLong(185544032L); if (unlikely(!__pyx_int_185544032)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_188265286 = PyInt_FromLong(188265286L); if (unlikely(!__pyx_int_188265286)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_210124308 = PyInt_FromLong(210124308L); if (unlikely(!__pyx_int_210124308)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_217540299 = PyInt_FromLong(217540299L); if (unlikely(!__pyx_int_217540299)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_219789001 = PyInt_FromLong(219789001L); if (unlikely(!__pyx_int_219789001)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_228146014 = PyInt_FromLong(228146014L); if (unlikely(!__pyx_int_228146014)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_241521041 = PyInt_FromLong(241521041L); if (unlikely(!__pyx_int_241521041)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_242672649 = PyInt_FromLong(242672649L); if (unlikely(!__pyx_int_242672649)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_251556977 = PyInt_FromLong(251556977L); if (unlikely(!__pyx_int_251556977)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_258009577 = PyInt_FromLong(258009577L); if (unlikely(!__pyx_int_258009577)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_261406006 = PyInt_FromLong(261406006L); if (unlikely(!__pyx_int_261406006)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_262512166 = PyInt_FromLong(262512166L); if (unlikely(!__pyx_int_262512166)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_266904154 = PyInt_FromLong(266904154L); if (unlikely(!__pyx_int_266904154)) __PYX_ERR(0, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/

static int __Pyx_modinit_global_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_init_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_Constraint) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_Constraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_Constraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_Constraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_Constraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Constraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_Constraint) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_Constraint) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_Constraint = &__pyx_type_9apischema_15deserialization_7methods_Constraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MinimumConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MinimumConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MinimumConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MinimumConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_17MinimumConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MinimumConstraint) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MinimumConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MinimumConstraint = &__pyx_type_9apischema_15deserialization_7methods_MinimumConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MaximumConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MaximumConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MaximumConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MaximumConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_17MaximumConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MaximumConstraint) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MaximumConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MaximumConstraint = &__pyx_type_9apischema_15deserialization_7methods_MaximumConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMinimumConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ExclusiveMinimumConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint = &__pyx_type_9apischema_15deserialization_7methods_ExclusiveMinimumConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_26ExclusiveMaximumConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ExclusiveMaximumConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint = &__pyx_type_9apischema_15deserialization_7methods_ExclusiveMaximumConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MultipleOfConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MultipleOfConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MultipleOfConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MultipleOfConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_20MultipleOfConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MultipleOfConstraint) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MultipleOfConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MultipleOfConstraint = &__pyx_type_9apischema_15deserialization_7methods_MultipleOfConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MinLengthConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MinLengthConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MinLengthConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MinLengthConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_19MinLengthConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint) < 0) __PYX_ERR(0, 95, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MinLengthConstraint) < 0) __PYX_ERR(0, 95, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MinLengthConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint) < 0) __PYX_ERR(0, 95, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint) < 0) __PYX_ERR(0, 95, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MinLengthConstraint = &__pyx_type_9apischema_15deserialization_7methods_MinLengthConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MaxLengthConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MaxLengthConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MaxLengthConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxLengthConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_19MaxLengthConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MaxLengthConstraint) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MaxLengthConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MaxLengthConstraint = &__pyx_type_9apischema_15deserialization_7methods_MaxLengthConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_PatternConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_PatternConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_PatternConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_PatternConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_17PatternConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_PatternConstraint) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_PatternConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_PatternConstraint) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PatternConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_PatternConstraint) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_PatternConstraint) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_PatternConstraint = &__pyx_type_9apischema_15deserialization_7methods_PatternConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MinItemsConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MinItemsConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MinItemsConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MinItemsConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_18MinItemsConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint) < 0) __PYX_ERR(0, 128, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MinItemsConstraint) < 0) __PYX_ERR(0, 128, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MinItemsConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint) < 0) __PYX_ERR(0, 128, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint) < 0) __PYX_ERR(0, 128, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MinItemsConstraint = &__pyx_type_9apischema_15deserialization_7methods_MinItemsConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MaxItemsConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MaxItemsConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MaxItemsConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxItemsConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_18MaxItemsConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MaxItemsConstraint) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MaxItemsConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MaxItemsConstraint = &__pyx_type_9apischema_15deserialization_7methods_MaxItemsConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_UniqueItemsConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_UniqueItemsConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_UniqueItemsConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_UniqueItemsConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_21UniqueItemsConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_UniqueItemsConstraint) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_UniqueItemsConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_UniqueItemsConstraint = &__pyx_type_9apischema_15deserialization_7methods_UniqueItemsConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MinPropertiesConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MinPropertiesConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MinPropertiesConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MinPropertiesConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_23MinPropertiesConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MinPropertiesConstraint) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MinPropertiesConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MinPropertiesConstraint = &__pyx_type_9apischema_15deserialization_7methods_MinPropertiesConstraint;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MaxPropertiesConstraint = &__pyx_vtable_9apischema_15deserialization_7methods_MaxPropertiesConstraint;
  __pyx_vtable_9apischema_15deserialization_7methods_MaxPropertiesConstraint.validate = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MaxPropertiesConstraint *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_23MaxPropertiesConstraint_validate;
  __pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint) < 0) __PYX_ERR(0, 173, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MaxPropertiesConstraint) < 0) __PYX_ERR(0, 173, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MaxPropertiesConstraint, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint) < 0) __PYX_ERR(0, 173, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint) < 0) __PYX_ERR(0, 173, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MaxPropertiesConstraint = &__pyx_type_9apischema_15deserialization_7methods_MaxPropertiesConstraint;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_DeserializationMethod) < 0) __PYX_ERR(0, 184, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_DeserializationMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_DeserializationMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_DeserializationMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_DeserializationMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DeserializationMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_DeserializationMethod) < 0) __PYX_ERR(0, 184, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_DeserializationMethod) < 0) __PYX_ERR(0, 184, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod = &__pyx_type_9apischema_15deserialization_7methods_DeserializationMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_RecMethod = &__pyx_vtable_9apischema_15deserialization_7methods_RecMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_RecMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_RecMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_9RecMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_RecMethod) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_RecMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_RecMethod) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RecMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_RecMethod) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_RecMethod) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_RecMethod = &__pyx_type_9apischema_15deserialization_7methods_RecMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ValidatorMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ValidatorMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ValidatorMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ValidatorMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_15ValidatorMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ValidatorMethod) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ValidatorMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ValidatorMethod = &__pyx_type_9apischema_15deserialization_7methods_ValidatorMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_CoercerMethod = &__pyx_vtable_9apischema_15deserialization_7methods_CoercerMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_CoercerMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_CoercerMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_13CoercerMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_CoercerMethod) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_CoercerMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_CoercerMethod) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CoercerMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_CoercerMethod) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_CoercerMethod) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_CoercerMethod = &__pyx_type_9apischema_15deserialization_7methods_CoercerMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_TypeCheckMethod = &__pyx_vtable_9apischema_15deserialization_7methods_TypeCheckMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_TypeCheckMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_TypeCheckMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_15TypeCheckMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod) < 0) __PYX_ERR(0, 227, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_TypeCheckMethod) < 0) __PYX_ERR(0, 227, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TypeCheckMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod) < 0) __PYX_ERR(0, 227, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod) < 0) __PYX_ERR(0, 227, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_TypeCheckMethod = &__pyx_type_9apischema_15deserialization_7methods_TypeCheckMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_AnyMethod = &__pyx_vtable_9apischema_15deserialization_7methods_AnyMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_AnyMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_AnyMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_9AnyMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_AnyMethod) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_AnyMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_AnyMethod) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AnyMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_AnyMethod) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_AnyMethod) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_AnyMethod = &__pyx_type_9apischema_15deserialization_7methods_AnyMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ListCheckOnlyMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ListCheckOnlyMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ListCheckOnlyMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ListCheckOnlyMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_19ListCheckOnlyMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod) < 0) __PYX_ERR(0, 249, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ListCheckOnlyMethod) < 0) __PYX_ERR(0, 249, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ListCheckOnlyMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod) < 0) __PYX_ERR(0, 249, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod) < 0) __PYX_ERR(0, 249, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ListCheckOnlyMethod = &__pyx_type_9apischema_15deserialization_7methods_ListCheckOnlyMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ListMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ListMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ListMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ListMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_10ListMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ListMethod) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ListMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ListMethod) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ListMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ListMethod) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ListMethod) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ListMethod = &__pyx_type_9apischema_15deserialization_7methods_ListMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_SetMethod = &__pyx_vtable_9apischema_15deserialization_7methods_SetMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_SetMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_SetMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_9SetMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_SetMethod) < 0) __PYX_ERR(0, 273, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_SetMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_SetMethod) < 0) __PYX_ERR(0, 273, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SetMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_SetMethod) < 0) __PYX_ERR(0, 273, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_SetMethod) < 0) __PYX_ERR(0, 273, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_SetMethod = &__pyx_type_9apischema_15deserialization_7methods_SetMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_VariadicTupleMethod = &__pyx_vtable_9apischema_15deserialization_7methods_VariadicTupleMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_VariadicTupleMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_VariadicTupleMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_19VariadicTupleMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_VariadicTupleMethod) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VariadicTupleMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_VariadicTupleMethod = &__pyx_type_9apischema_15deserialization_7methods_VariadicTupleMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_LiteralMethod = &__pyx_vtable_9apischema_15deserialization_7methods_LiteralMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_LiteralMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_LiteralMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_13LiteralMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_LiteralMethod) < 0) __PYX_ERR(0, 295, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_LiteralMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_LiteralMethod) < 0) __PYX_ERR(0, 295, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LiteralMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_LiteralMethod) < 0) __PYX_ERR(0, 295, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_LiteralMethod) < 0) __PYX_ERR(0, 295, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_LiteralMethod = &__pyx_type_9apischema_15deserialization_7methods_LiteralMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MappingCheckOnly = &__pyx_vtable_9apischema_15deserialization_7methods_MappingCheckOnly;
  __pyx_vtable_9apischema_15deserialization_7methods_MappingCheckOnly.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MappingCheckOnly *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_16MappingCheckOnly_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MappingCheckOnly) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MappingCheckOnly, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MappingCheckOnly = &__pyx_type_9apischema_15deserialization_7methods_MappingCheckOnly;
  __pyx_vtabptr_9apischema_15deserialization_7methods_MappingMethod = &__pyx_vtable_9apischema_15deserialization_7methods_MappingMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_MappingMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_MappingMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_13MappingMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_MappingMethod) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_MappingMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_MappingMethod) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MappingMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_MappingMethod) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_MappingMethod) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_MappingMethod = &__pyx_type_9apischema_15deserialization_7methods_MappingMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_Field) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_Field.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_Field.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_Field.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_Field.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Field, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_Field) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_Field) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_Field = &__pyx_type_9apischema_15deserialization_7methods_Field;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_FlattenedField) < 0) __PYX_ERR(0, 355, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_FlattenedField.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_FlattenedField.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_FlattenedField.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_FlattenedField.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FlattenedField, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_FlattenedField) < 0) __PYX_ERR(0, 355, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_FlattenedField) < 0) __PYX_ERR(0, 355, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_FlattenedField = &__pyx_type_9apischema_15deserialization_7methods_FlattenedField;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_PatternField) < 0) __PYX_ERR(0, 367, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_PatternField.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_PatternField.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_PatternField.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_PatternField.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PatternField, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_PatternField) < 0) __PYX_ERR(0, 367, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_PatternField) < 0) __PYX_ERR(0, 367, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_PatternField = &__pyx_type_9apischema_15deserialization_7methods_PatternField;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_AdditionalField) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_AdditionalField.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_AdditionalField.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_AdditionalField.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_AdditionalField.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AdditionalField, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_AdditionalField) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_AdditionalField) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_AdditionalField = &__pyx_type_9apischema_15deserialization_7methods_AdditionalField;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_Constructor) < 0) __PYX_ERR(0, 389, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_Constructor.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_Constructor.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_Constructor.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_Constructor.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Constructor, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_Constructor) < 0) __PYX_ERR(0, 389, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_Constructor) < 0) __PYX_ERR(0, 389, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_Constructor = &__pyx_type_9apischema_15deserialization_7methods_Constructor;
  __pyx_vtabptr_9apischema_15deserialization_7methods_NoConstructor = &__pyx_vtable_9apischema_15deserialization_7methods_NoConstructor;
  __pyx_vtable_9apischema_15deserialization_7methods_NoConstructor.construct = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_NoConstructor *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_13NoConstructor_construct;
  __pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constructor;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_NoConstructor) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_NoConstructor.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_NoConstructor) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NoConstructor, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_NoConstructor) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_NoConstructor) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_NoConstructor = &__pyx_type_9apischema_15deserialization_7methods_NoConstructor;
  __pyx_vtabptr_9apischema_15deserialization_7methods_RawConstructor = &__pyx_vtable_9apischema_15deserialization_7methods_RawConstructor;
  __pyx_vtable_9apischema_15deserialization_7methods_RawConstructor.construct = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_RawConstructor *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_14RawConstructor_construct;
  __pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constructor;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_RawConstructor) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_RawConstructor.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_RawConstructor) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RawConstructor, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_RawConstructor) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_RawConstructor) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_RawConstructor = &__pyx_type_9apischema_15deserialization_7methods_RawConstructor;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_DefaultField) < 0) __PYX_ERR(0, 414, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_DefaultField.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_DefaultField.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_DefaultField.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_DefaultField.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DefaultField, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_DefaultField) < 0) __PYX_ERR(0, 414, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_DefaultField) < 0) __PYX_ERR(0, 414, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_DefaultField = &__pyx_type_9apischema_15deserialization_7methods_DefaultField;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_FactoryField) < 0) __PYX_ERR(0, 422, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_FactoryField.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_FactoryField.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_FactoryField.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_FactoryField.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FactoryField, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_FactoryField) < 0) __PYX_ERR(0, 422, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_FactoryField) < 0) __PYX_ERR(0, 422, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_FactoryField = &__pyx_type_9apischema_15deserialization_7methods_FactoryField;
  __pyx_vtabptr_9apischema_15deserialization_7methods_FieldsConstructor = &__pyx_vtable_9apischema_15deserialization_7methods_FieldsConstructor;
  __pyx_vtable_9apischema_15deserialization_7methods_FieldsConstructor.construct = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_FieldsConstructor *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_17FieldsConstructor_construct;
  __pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_Constructor;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_FieldsConstructor) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FieldsConstructor, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_FieldsConstructor = &__pyx_type_9apischema_15deserialization_7methods_FieldsConstructor;
  __pyx_vtabptr_9apischema_15deserialization_7methods_SimpleObjectMethod = &__pyx_vtable_9apischema_15deserialization_7methods_SimpleObjectMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_SimpleObjectMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_SimpleObjectMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_18SimpleObjectMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod) < 0) __PYX_ERR(0, 445, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_SimpleObjectMethod) < 0) __PYX_ERR(0, 445, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SimpleObjectMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod) < 0) __PYX_ERR(0, 445, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod) < 0) __PYX_ERR(0, 445, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_SimpleObjectMethod = &__pyx_type_9apischema_15deserialization_7methods_SimpleObjectMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ObjectMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ObjectMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ObjectMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ObjectMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_12ObjectMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ObjectMethod) < 0) __PYX_ERR(0, 465, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ObjectMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ObjectMethod) < 0) __PYX_ERR(0, 465, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ObjectMethod) < 0) __PYX_ERR(0, 465, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ObjectMethod) < 0) __PYX_ERR(0, 465, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ObjectMethod = &__pyx_type_9apischema_15deserialization_7methods_ObjectMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_NoneMethod = &__pyx_vtable_9apischema_15deserialization_7methods_NoneMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_NoneMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_NoneMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_10NoneMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_NoneMethod) < 0) __PYX_ERR(0, 511, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_NoneMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_NoneMethod) < 0) __PYX_ERR(0, 511, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NoneMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_NoneMethod) < 0) __PYX_ERR(0, 511, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_NoneMethod) < 0) __PYX_ERR(0, 511, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_NoneMethod = &__pyx_type_9apischema_15deserialization_7methods_NoneMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_IntMethod = &__pyx_vtable_9apischema_15deserialization_7methods_IntMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_IntMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_9IntMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_IntMethod) < 0) __PYX_ERR(0, 519, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_IntMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_IntMethod) < 0) __PYX_ERR(0, 519, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_IntMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_IntMethod) < 0) __PYX_ERR(0, 519, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_IntMethod) < 0) __PYX_ERR(0, 519, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_IntMethod = &__pyx_type_9apischema_15deserialization_7methods_IntMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_FloatMethod = &__pyx_vtable_9apischema_15deserialization_7methods_FloatMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_FloatMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_11FloatMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_FloatMethod) < 0) __PYX_ERR(0, 527, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_FloatMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_FloatMethod) < 0) __PYX_ERR(0, 527, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FloatMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_FloatMethod) < 0) __PYX_ERR(0, 527, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_FloatMethod) < 0) __PYX_ERR(0, 527, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_FloatMethod = &__pyx_type_9apischema_15deserialization_7methods_FloatMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_StrMethod = &__pyx_vtable_9apischema_15deserialization_7methods_StrMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_StrMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_9StrMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_StrMethod) < 0) __PYX_ERR(0, 535, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_StrMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_StrMethod) < 0) __PYX_ERR(0, 535, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_StrMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_StrMethod) < 0) __PYX_ERR(0, 535, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_StrMethod) < 0) __PYX_ERR(0, 535, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_StrMethod = &__pyx_type_9apischema_15deserialization_7methods_StrMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_BoolMethod = &__pyx_vtable_9apischema_15deserialization_7methods_BoolMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_BoolMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_BoolMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_10BoolMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_BoolMethod) < 0) __PYX_ERR(0, 543, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_BoolMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_BoolMethod) < 0) __PYX_ERR(0, 543, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoolMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_BoolMethod) < 0) __PYX_ERR(0, 543, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_BoolMethod) < 0) __PYX_ERR(0, 543, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_BoolMethod = &__pyx_type_9apischema_15deserialization_7methods_BoolMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedIntMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConstrainedIntMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedIntMethod.__pyx_base = *__pyx_vtabptr_9apischema_15deserialization_7methods_IntMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedIntMethod.__pyx_base.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_IntMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_20ConstrainedIntMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_IntMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod) < 0) __PYX_ERR(0, 551, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedIntMethod) < 0) __PYX_ERR(0, 551, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConstrainedIntMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod) < 0) __PYX_ERR(0, 551, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod) < 0) __PYX_ERR(0, 551, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConstrainedIntMethod = &__pyx_type_9apischema_15deserialization_7methods_ConstrainedIntMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedFloatMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConstrainedFloatMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedFloatMethod.__pyx_base = *__pyx_vtabptr_9apischema_15deserialization_7methods_FloatMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedFloatMethod.__pyx_base.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_FloatMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_22ConstrainedFloatMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_FloatMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod) < 0) __PYX_ERR(0, 561, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedFloatMethod) < 0) __PYX_ERR(0, 561, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConstrainedFloatMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod) < 0) __PYX_ERR(0, 561, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod) < 0) __PYX_ERR(0, 561, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConstrainedFloatMethod = &__pyx_type_9apischema_15deserialization_7methods_ConstrainedFloatMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedStrMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConstrainedStrMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedStrMethod.__pyx_base = *__pyx_vtabptr_9apischema_15deserialization_7methods_StrMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConstrainedStrMethod.__pyx_base.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_StrMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_20ConstrainedStrMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_StrMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConstrainedStrMethod) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConstrainedStrMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConstrainedStrMethod = &__pyx_type_9apischema_15deserialization_7methods_ConstrainedStrMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_SubprimitiveMethod = &__pyx_vtable_9apischema_15deserialization_7methods_SubprimitiveMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_SubprimitiveMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_SubprimitiveMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_18SubprimitiveMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_SubprimitiveMethod) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SubprimitiveMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_SubprimitiveMethod = &__pyx_type_9apischema_15deserialization_7methods_SubprimitiveMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_TupleMethod = &__pyx_vtable_9apischema_15deserialization_7methods_TupleMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_TupleMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_TupleMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_11TupleMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_TupleMethod) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_TupleMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_TupleMethod) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TupleMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_TupleMethod) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_TupleMethod) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_TupleMethod = &__pyx_type_9apischema_15deserialization_7methods_TupleMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_OptionalMethod = &__pyx_vtable_9apischema_15deserialization_7methods_OptionalMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_OptionalMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_OptionalMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_14OptionalMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_OptionalMethod) < 0) __PYX_ERR(0, 609, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_OptionalMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_OptionalMethod) < 0) __PYX_ERR(0, 609, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OptionalMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_OptionalMethod) < 0) __PYX_ERR(0, 609, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_OptionalMethod) < 0) __PYX_ERR(0, 609, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_OptionalMethod = &__pyx_type_9apischema_15deserialization_7methods_OptionalMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_UnionByTypeMethod = &__pyx_vtable_9apischema_15deserialization_7methods_UnionByTypeMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_UnionByTypeMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_UnionByTypeMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_17UnionByTypeMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod) < 0) __PYX_ERR(0, 621, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_UnionByTypeMethod) < 0) __PYX_ERR(0, 621, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_UnionByTypeMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod) < 0) __PYX_ERR(0, 621, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod) < 0) __PYX_ERR(0, 621, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_UnionByTypeMethod = &__pyx_type_9apischema_15deserialization_7methods_UnionByTypeMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_UnionMethod = &__pyx_vtable_9apischema_15deserialization_7methods_UnionMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_UnionMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_UnionMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_11UnionMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_UnionMethod) < 0) __PYX_ERR(0, 631, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_UnionMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_UnionMethod) < 0) __PYX_ERR(0, 631, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_UnionMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_UnionMethod) < 0) __PYX_ERR(0, 631, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_UnionMethod) < 0) __PYX_ERR(0, 631, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_UnionMethod = &__pyx_type_9apischema_15deserialization_7methods_UnionMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConversionMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConversionMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_16ConversionMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConversionMethod) < 0) __PYX_ERR(0, 641, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConversionMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionMethod) < 0) __PYX_ERR(0, 641, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConversionMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConversionMethod) < 0) __PYX_ERR(0, 641, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConversionMethod) < 0) __PYX_ERR(0, 641, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConversionMethod = &__pyx_type_9apischema_15deserialization_7methods_ConversionMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.__pyx_base = *__pyx_vtabptr_9apischema_15deserialization_7methods_ConversionMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.__pyx_base.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_30ConversionWithValueErrorMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_ConversionMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConversionWithValueErrorMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod = &__pyx_type_9apischema_15deserialization_7methods_ConversionWithValueErrorMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConversionAlternative) < 0) __PYX_ERR(0, 663, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConversionAlternative.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConversionAlternative.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConversionAlternative.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConversionAlternative.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConversionAlternative, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConversionAlternative) < 0) __PYX_ERR(0, 663, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConversionAlternative) < 0) __PYX_ERR(0, 663, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConversionAlternative = &__pyx_type_9apischema_15deserialization_7methods_ConversionAlternative;
  __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionUnionMethod = &__pyx_vtable_9apischema_15deserialization_7methods_ConversionUnionMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_ConversionUnionMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_ConversionUnionMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_21ConversionUnionMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_ConversionUnionMethod) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConversionUnionMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_ConversionUnionMethod = &__pyx_type_9apischema_15deserialization_7methods_ConversionUnionMethod;
  __pyx_vtabptr_9apischema_15deserialization_7methods_DiscriminatorMethod = &__pyx_vtable_9apischema_15deserialization_7methods_DiscriminatorMethod;
  __pyx_vtable_9apischema_15deserialization_7methods_DiscriminatorMethod.deserialize = (PyObject *(*)(struct __pyx_obj_9apischema_15deserialization_7methods_DiscriminatorMethod *, PyObject *, int __pyx_skip_dispatch))__pyx_f_9apischema_15deserialization_7methods_19DiscriminatorMethod_deserialize;
  __pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_base = __pyx_ptype_9apischema_15deserialization_7methods_DeserializationMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod.tp_dict, __pyx_vtabptr_9apischema_15deserialization_7methods_DiscriminatorMethod) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DiscriminatorMethod, (PyObject *)&__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
  __pyx_ptype_9apischema_15deserialization_7methods_DiscriminatorMethod = &__pyx_type_9apischema_15deserialization_7methods_DiscriminatorMethod;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize) < 0) __PYX_ERR(0, 1150, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize = &__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct____pyx_f_9apischema_15deserialization_7methods_UnionByTypeMethod_deserialize;
  if (PyType_Ready(&__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(0, 1157, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr.tp_dictoffset && __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr = &__pyx_type_9apischema_15deserialization_7methods___pyx_scope_struct_1_genexpr;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}


#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" void
#else
#define __Pyx_PyMODINIT_FUNC void
#endif
#else
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
#else
#define __Pyx_PyMODINIT_FUNC PyObject *
#endif
#endif


#if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initmethods(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initmethods(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_methods(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_methods(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    #if PY_VERSION_HEX >= 0x030700A1
    static PY_INT64_T main_interpreter_id = -1;
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return (unlikely(current_id == -1)) ? -1 : 0;
    } else if (unlikely(main_interpreter_id != current_id))
    #else
    static PyInterpreterState *main_interpreter = NULL;
    PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
    if (!main_interpreter) {
        main_interpreter = current_interpreter;
    } else if (unlikely(main_interpreter != current_interpreter))
    #endif
    {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    if (__Pyx_check_single_interpreter())
        return NULL;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_methods(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'methods' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #elif PY_MAJOR_VERSION >= 3
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  #if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
  PyErr_Clear();
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
  if (!__Pyx_RefNanny)
      Py_FatalError("failed to import 'refnanny' module");
}
#endif
  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_methods(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  PyEval_InitThreads();
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("methods", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_b);
  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_cython_runtime);
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_apischema__deserialization__methods) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "apischema.deserialization.methods")) {
      if (unlikely(PyDict_SetItemString(modules, "apischema.deserialization.methods", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code();
  (void)__Pyx_modinit_variable_export_code();
  (void)__Pyx_modinit_function_export_code();
  if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_type_import_code();
  (void)__Pyx_modinit_variable_import_code();
  (void)__Pyx_modinit_function_import_code();
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif

  /* "apischema/deserialization/methods.pyx":2
 * cimport cython
 * from dataclasses import dataclass, field             # <<<<<<<<<<<<<<
 * from typing import (
 *     AbstractSet,
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_dataclass);
  __Pyx_GIVEREF(__pyx_n_s_dataclass);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_dataclass);
  __Pyx_INCREF(__pyx_n_s_field);
  __Pyx_GIVEREF(__pyx_n_s_field);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_field);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_dataclasses, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_dataclass); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dataclass, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_field, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":4
 * from dataclasses import dataclass, field
 * from typing import (
 *     AbstractSet,             # <<<<<<<<<<<<<<
 *     Any,
 *     Callable,
 */
  __pyx_t_2 = PyList_New(11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_AbstractSet);
  __Pyx_GIVEREF(__pyx_n_s_AbstractSet);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_AbstractSet);
  __Pyx_INCREF(__pyx_n_s_Any);
  __Pyx_GIVEREF(__pyx_n_s_Any);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Any);
  __Pyx_INCREF(__pyx_n_s_Callable);
  __Pyx_GIVEREF(__pyx_n_s_Callable);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_Callable);
  __Pyx_INCREF(__pyx_n_s_Dict);
  __Pyx_GIVEREF(__pyx_n_s_Dict);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_Dict);
  __Pyx_INCREF(__pyx_n_s_List);
  __Pyx_GIVEREF(__pyx_n_s_List);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_List);
  __Pyx_INCREF(__pyx_n_s_Mapping);
  __Pyx_GIVEREF(__pyx_n_s_Mapping);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_n_s_Mapping);
  __Pyx_INCREF(__pyx_n_s_Optional);
  __Pyx_GIVEREF(__pyx_n_s_Optional);
  PyList_SET_ITEM(__pyx_t_2, 6, __pyx_n_s_Optional);
  __Pyx_INCREF(__pyx_n_s_Pattern);
  __Pyx_GIVEREF(__pyx_n_s_Pattern);
  PyList_SET_ITEM(__pyx_t_2, 7, __pyx_n_s_Pattern);
  __Pyx_INCREF(__pyx_n_s_Sequence);
  __Pyx_GIVEREF(__pyx_n_s_Sequence);
  PyList_SET_ITEM(__pyx_t_2, 8, __pyx_n_s_Sequence);
  __Pyx_INCREF(__pyx_n_s_Tuple);
  __Pyx_GIVEREF(__pyx_n_s_Tuple);
  PyList_SET_ITEM(__pyx_t_2, 9, __pyx_n_s_Tuple);
  __Pyx_INCREF(__pyx_n_s_Union);
  __Pyx_GIVEREF(__pyx_n_s_Union);
  PyList_SET_ITEM(__pyx_t_2, 10, __pyx_n_s_Union);

  /* "apischema/deserialization/methods.pyx":3
 * cimport cython
 * from dataclasses import dataclass, field
 * from typing import (             # <<<<<<<<<<<<<<
 *     AbstractSet,
 *     Any,
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_AbstractSet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AbstractSet, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Callable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Callable, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Dict, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_List); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_List, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Mapping, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Optional, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Pattern); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Pattern, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Sequence, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Tuple, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Union, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":17
 * )
 * 
 * from apischema.aliases import Aliaser             # <<<<<<<<<<<<<<
 * from apischema.conversions.utils import Converter
 * from apischema.deserialization.coercion import Coercer
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Aliaser);
  __Pyx_GIVEREF(__pyx_n_s_Aliaser);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Aliaser);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_apischema_aliases, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Aliaser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Aliaser, __pyx_t_1) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":18
 * 
 * from apischema.aliases import Aliaser
 * from apischema.conversions.utils import Converter             # <<<<<<<<<<<<<<
 * from apischema.deserialization.coercion import Coercer
 * from apischema.json_schema.types import bad_type
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_Converter);
  __Pyx_GIVEREF(__pyx_n_s_Converter);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Converter);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_apischema_conversions_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Converter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Converter, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":19
 * from apischema.aliases import Aliaser
 * from apischema.conversions.utils import Converter
 * from apischema.deserialization.coercion import Coercer             # <<<<<<<<<<<<<<
 * from apischema.json_schema.types import bad_type
 * from apischema.types import AnyType, NoneType
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Coercer);
  __Pyx_GIVEREF(__pyx_n_s_Coercer);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Coercer);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_apischema_deserialization_coerci, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Coercer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Coercer, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":20
 * from apischema.conversions.utils import Converter
 * from apischema.deserialization.coercion import Coercer
 * from apischema.json_schema.types import bad_type             # <<<<<<<<<<<<<<
 * from apischema.types import AnyType, NoneType
 * from apischema.utils import Lazy
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_bad_type);
  __Pyx_GIVEREF(__pyx_n_s_bad_type);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_bad_type);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_apischema_json_schema_types, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_bad_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bad_type, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":21
 * from apischema.deserialization.coercion import Coercer
 * from apischema.json_schema.types import bad_type
 * from apischema.types import AnyType, NoneType             # <<<<<<<<<<<<<<
 * from apischema.utils import Lazy
 * from apischema.validation.errors import (
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_AnyType);
  __Pyx_GIVEREF(__pyx_n_s_AnyType);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_AnyType);
  __Pyx_INCREF(__pyx_n_s_NoneType);
  __Pyx_GIVEREF(__pyx_n_s_NoneType);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_NoneType);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_apischema_types, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_AnyType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AnyType, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NoneType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NoneType, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":22
 * from apischema.json_schema.types import bad_type
 * from apischema.types import AnyType, NoneType
 * from apischema.utils import Lazy             # <<<<<<<<<<<<<<
 * from apischema.validation.errors import (
 *     ErrorKey,
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_Lazy);
  __Pyx_GIVEREF(__pyx_n_s_Lazy);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Lazy);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_apischema_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Lazy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Lazy, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":24
 * from apischema.utils import Lazy
 * from apischema.validation.errors import (
 *     ErrorKey,             # <<<<<<<<<<<<<<
 *     ErrorMsg,
 *     ValidationError,
 */
  __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_ErrorKey);
  __Pyx_GIVEREF(__pyx_n_s_ErrorKey);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_ErrorKey);
  __Pyx_INCREF(__pyx_n_s_ErrorMsg);
  __Pyx_GIVEREF(__pyx_n_s_ErrorMsg);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_ErrorMsg);
  __Pyx_INCREF(__pyx_n_s_ValidationError);
  __Pyx_GIVEREF(__pyx_n_s_ValidationError);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_ValidationError);
  __Pyx_INCREF(__pyx_n_s_merge_errors);
  __Pyx_GIVEREF(__pyx_n_s_merge_errors);
  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_merge_errors);

  /* "apischema/deserialization/methods.pyx":23
 * from apischema.types import AnyType, NoneType
 * from apischema.utils import Lazy
 * from apischema.validation.errors import (             # <<<<<<<<<<<<<<
 *     ErrorKey,
 *     ErrorMsg,
 */
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_apischema_validation_errors, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ErrorKey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorKey, __pyx_t_1) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ErrorMsg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorMsg, __pyx_t_1) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ValidationError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ValidationError, __pyx_t_1) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_merge_errors); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_merge_errors, __pyx_t_1) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":29
 *     merge_errors,
 * )
 * from apischema.validation.mock import ValidatorMock             # <<<<<<<<<<<<<<
 * from apischema.validation.validators import Validator, validate
 * 
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_ValidatorMock);
  __Pyx_GIVEREF(__pyx_n_s_ValidatorMock);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ValidatorMock);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_apischema_validation_mock, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ValidatorMock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ValidatorMock, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "apischema/deserialization/methods.pyx":30
 * )
 * from apischema.validation.mock import ValidatorMock
 * from apischema.validation.validators import Validator, validate             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Validator);
  __Pyx_GIVEREF(__pyx_n_s_Validator);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Validator);
  __Pyx_INCREF(__pyx_n_s_validate);
  __Pyx_GIVEREF(__pyx_n_s_validate);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_validate);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_apischema_validation_validators, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Validator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Validator, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_validate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_validate, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Constraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_13__pyx_unpickle_Constraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Constraint, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_Constraint__set_state(<Constraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Constraint__set_state(Constraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_15__pyx_unpickle_MinimumConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MinimumConstraint, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_17__pyx_unpickle_MaximumConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MaximumConstraint, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaximumConstraint__set_state(<MaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaximumConstraint__set_state(MaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.maximum = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_19__pyx_unpickle_ExclusiveMinimumConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ExclusiveMinimumC, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ExclusiveMaximumConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_21__pyx_unpickle_ExclusiveMaximumConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ExclusiveMaximumC, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ExclusiveMaximumConstraint__set_state(<ExclusiveMaximumConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ExclusiveMaximumConstraint__set_state(ExclusiveMaximumConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.exc_max = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_23__pyx_unpickle_MultipleOfConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MultipleOfConstra, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinLengthConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_25__pyx_unpickle_MinLengthConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MinLengthConstrai, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinLengthConstraint__set_state(<MinLengthConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinLengthConstraint__set_state(MinLengthConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_len = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_27__pyx_unpickle_MaxLengthConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MaxLengthConstrai, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_PatternConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_29__pyx_unpickle_PatternConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PatternConstraint, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_PatternConstraint__set_state(<PatternConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PatternConstraint__set_state(PatternConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.pattern = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_31__pyx_unpickle_MinItemsConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MinItemsConstrain, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MaxItemsConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_33__pyx_unpickle_MaxItemsConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MaxItemsConstrain, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_MaxItemsConstraint__set_state(<MaxItemsConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MaxItemsConstraint__set_state(MaxItemsConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.max_items = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_35__pyx_unpickle_UniqueItemsConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_UniqueItemsConstr, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MinPropertiesConstraint(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_37__pyx_unpickle_MinPropertiesConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MinPropertiesCons, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_MinPropertiesConstraint__set_state(<MinPropertiesConstraint> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MinPropertiesConstraint__set_state(MinPropertiesConstraint __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.min_properties = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_39__pyx_unpickle_MaxPropertiesConstraint, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MaxPropertiesCons, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DeserializationMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_41__pyx_unpickle_DeserializationMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_DeserializationMe, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_DeserializationMethod__set_state(<DeserializationMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DeserializationMethod__set_state(DeserializationMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_43__pyx_unpickle_RecMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RecMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ValidatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_45__pyx_unpickle_ValidatorMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ValidatorMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ValidatorMethod__set_state(<ValidatorMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ValidatorMethod__set_state(ValidatorMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.aliaser = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.validators = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_47__pyx_unpickle_CoercerMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_CoercerMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_TypeCheckMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_49__pyx_unpickle_TypeCheckMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_TypeCheckMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_TypeCheckMethod__set_state(<TypeCheckMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TypeCheckMethod__set_state(TypeCheckMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.expected = __pyx_state[1]; __pyx_result.fallback = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_51__pyx_unpickle_AnyMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_AnyMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ListCheckOnlyMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_53__pyx_unpickle_ListCheckOnlyMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ListCheckOnlyMeth, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ListCheckOnlyMethod__set_state(<ListCheckOnlyMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ListCheckOnlyMethod__set_state(ListCheckOnlyMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_55__pyx_unpickle_ListMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ListMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_SetMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_57__pyx_unpickle_SetMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SetMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_SetMethod__set_state(<SetMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_SetMethod__set_state(SetMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.value_method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_59__pyx_unpickle_VariadicTupleMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_VariadicTupleMeth, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_LiteralMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_61__pyx_unpickle_LiteralMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_LiteralMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_LiteralMethod__set_state(<LiteralMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_LiteralMethod__set_state(LiteralMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.coercer = __pyx_state[1]; __pyx_result.error = __pyx_state[2]; __pyx_result.types = __pyx_state[3]; __pyx_result.value_map = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_63__pyx_unpickle_MappingCheckOnly, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MappingCheckOnly, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_MappingMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_65__pyx_unpickle_MappingMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_MappingMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_MappingMethod__set_state(<MappingMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_MappingMethod__set_state(MappingMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.key_method = __pyx_state[2]; __pyx_result.value_method = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_67__pyx_unpickle_Field, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Field, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FlattenedField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_69__pyx_unpickle_FlattenedField, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FlattenedField, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_FlattenedField__set_state(<FlattenedField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FlattenedField__set_state(FlattenedField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.aliases = __pyx_state[0]; __pyx_result.fall_back_on_default = __pyx_state[1]; __pyx_result.method = __pyx_state[2]; __pyx_result.name = __pyx_state[3]
 *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_71__pyx_unpickle_PatternField, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PatternField, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_AdditionalField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_73__pyx_unpickle_AdditionalField, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_AdditionalField, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_AdditionalField__set_state(<AdditionalField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AdditionalField__set_state(AdditionalField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.fall_back_on_default = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_75__pyx_unpickle_Constructor, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Constructor, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_NoConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_77__pyx_unpickle_NoConstructor, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_NoConstructor, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_NoConstructor__set_state(<NoConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_NoConstructor__set_state(NoConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_79__pyx_unpickle_RawConstructor, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RawConstructor, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DefaultField(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_81__pyx_unpickle_DefaultField, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_DefaultField, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_DefaultField__set_state(<DefaultField> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_DefaultField__set_state(DefaultField __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.default_value = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_83__pyx_unpickle_FactoryField, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FactoryField, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_FieldsConstructor(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_85__pyx_unpickle_FieldsConstructor, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FieldsConstructor, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_FieldsConstructor__set_state(<FieldsConstructor> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_FieldsConstructor__set_state(FieldsConstructor __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.cls = __pyx_state[1]; __pyx_result.default_fields = __pyx_state[2]; __pyx_result.factory_fields = __pyx_state[3]; __pyx_result.nb_fields = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_87__pyx_unpickle_SimpleObjectMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SimpleObjectMetho, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ObjectMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_89__pyx_unpickle_ObjectMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ObjectMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ObjectMethod__set_state(<ObjectMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ObjectMethod__set_state(ObjectMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.additional_field = __pyx_state[1]; __pyx_result.additional_properties = __pyx_state[2]; __pyx_result.aggregate_fields = __pyx_state[3]; __pyx_result.aliaser = __pyx_state[4]; __pyx_result.all_aliases = __pyx_state[5]; __pyx_result.constraints = __pyx_state[6]; __pyx_result.constructor = __pyx_state[7]; __pyx_result.discriminator = __pyx_state[8]; __pyx_result.fields = __pyx_state[9]; __pyx_result.flattened_fields = __pyx_state[10]; __pyx_result.init_defaults = __pyx_state[11]; __pyx_result.missing = __pyx_state[12]; __pyx_result.pattern_fields = __pyx_state[13]; __pyx_result.post_init_modified = __pyx_state[14]; __pyx_result.typed_dict = __pyx_state[15]; __pyx_result.unexpected = __pyx_state[16]; __pyx_result.validators = __pyx_state[17]
 *     if len(__pyx_state) > 18 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_91__pyx_unpickle_NoneMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_NoneMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_IntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_93__pyx_unpickle_IntMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_IntMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_IntMethod__set_state(<IntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_IntMethod__set_state(IntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_95__pyx_unpickle_FloatMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FloatMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_StrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_97__pyx_unpickle_StrMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_StrMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_StrMethod__set_state(<StrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_StrMethod__set_state(StrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]
 *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_99__pyx_unpickle_BoolMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_BoolMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedIntMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_101__pyx_unpickle_ConstrainedIntMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConstrainedIntMet, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedIntMethod__set_state(<ConstrainedIntMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedIntMethod__set_state(ConstrainedIntMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_103__pyx_unpickle_ConstrainedFloatMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConstrainedFloatM, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConstrainedStrMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_105__pyx_unpickle_ConstrainedStrMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConstrainedStrMet, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConstrainedStrMethod__set_state(<ConstrainedStrMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConstrainedStrMethod__set_state(ConstrainedStrMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_107__pyx_unpickle_SubprimitiveMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SubprimitiveMetho, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_TupleMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_109__pyx_unpickle_TupleMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_TupleMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_TupleMethod__set_state(<TupleMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_TupleMethod__set_state(TupleMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.constraints = __pyx_state[1]; __pyx_result.elt_methods = __pyx_state[2]; __pyx_result.max_len_error = __pyx_state[3]; __pyx_result.min_len_error = __pyx_state[4]
 *     if len(__pyx_state) > 5 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_111__pyx_unpickle_OptionalMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_OptionalMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_UnionByTypeMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_113__pyx_unpickle_UnionByTypeMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_UnionByTypeMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_UnionByTypeMethod__set_state(<UnionByTypeMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_UnionByTypeMethod__set_state(UnionByTypeMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.method_by_cls = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_115__pyx_unpickle_UnionMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_UnionMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_117__pyx_unpickle_ConversionMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConversionMethod, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionMethod__set_state(<ConversionMethod> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionMethod__set_state(ConversionMethod __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._dispatch = __pyx_state[0]; __pyx_result.converter = __pyx_state[1]; __pyx_result.method = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_119__pyx_unpickle_ConversionWithValueErrorMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConversionWithVal, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ConversionAlternative(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_121__pyx_unpickle_ConversionAlternative, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConversionAlterna, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ConversionAlternative__set_state(<ConversionAlternative> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConversionAlternative__set_state(ConversionAlternative __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.converter = __pyx_state[0]; __pyx_result.method = __pyx_state[1]; __pyx_result.value_error = __pyx_state[2]
 *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_123__pyx_unpickle_ConversionUnionMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConversionUnionMe, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_DiscriminatorMethod(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9apischema_15deserialization_7methods_125__pyx_unpickle_DiscriminatorMethod, NULL, __pyx_n_s_apischema_deserialization_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_DiscriminatorMeth, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "apischema/deserialization/methods.pyx":1
 * cimport cython             # <<<<<<<<<<<<<<
 * from dataclasses import dataclass, field
 * from typing import (
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  if (__pyx_m) {
    if (__pyx_d) {
      __Pyx_AddTraceback("init apischema.deserialization.methods", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    Py_CLEAR(__pyx_m);
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init apischema.deserialization.methods");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* PyErrExceptionMatches */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    PyObject *exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
    if (unlikely(PyTuple_Check(err)))
        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}
#endif

/* GetAttr */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* GetAttr3 */
static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        return NULL;
    __Pyx_PyErr_Clear();
    Py_INCREF(d);
    return d;
}
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r = __Pyx_GetAttr(o, n);
    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
}

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
    result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    } else if (unlikely(PyErr_Occurred())) {
        return NULL;
    }
#else
    result = PyDict_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
#endif
#else
    result = PyObject_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* PyCFunctionFastCall */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
    PyObject *self = PyCFunction_GET_SELF(func);
    int flags = PyCFunction_GET_FLAGS(func);
    assert(PyCFunction_Check(func));
    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
    assert(nargs >= 0);
    assert(nargs == 0 || args != NULL);
    /* _PyCFunction_FastCallDict() must not be called with an exception set,
       because it may clear it (directly or indirectly) and so the
       caller loses its exception */
    assert(!PyErr_Occurred());
    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
        return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
    } else {
        return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
    }
}
#endif

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
        return NULL;
    }
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif
#endif

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCall2Args */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args, *result = NULL;
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyFunction_FastCall(function, args, 2);
    }
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyCFunction_FastCall(function, args, 2);
    }
    #endif
    args = PyTuple_New(2);
    if (unlikely(!args)) goto done;
    Py_INCREF(arg1);
    PyTuple_SET_ITEM(args, 0, arg1);
    Py_INCREF(arg2);
    PyTuple_SET_ITEM(args, 1, arg2);
    Py_INCREF(function);
    result = __Pyx_PyObject_Call(function, args, NULL);
    Py_DECREF(args);
    Py_DECREF(function);
done:
    return result;
}

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_New(1);
    if (unlikely(!args)) return NULL;
    Py_INCREF(arg);
    PyTuple_SET_ITEM(args, 0, arg);
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, &arg, 1);
    }
#endif
    if (likely(PyCFunction_Check(func))) {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
            return __Pyx_PyObject_CallMethO(func, arg);
#if CYTHON_FAST_PYCCALL
        } else if (__Pyx_PyFastCFunction_Check(func)) {
            return __Pyx_PyCFunction_FastCall(func, &arg, 1);
#endif
        }
    }
    return __Pyx__PyObject_CallOneArg(func, arg);
}
#else
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_Pack(1, arg);
    if (unlikely(!args)) return NULL;
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
#endif

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

/* ArgTypeTest */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (exact) {
        #if PY_MAJOR_VERSION == 2
        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return m->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* ObjectGetItem */
#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
    PyObject *runerr;
    Py_ssize_t key_value;
    PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
    if (unlikely(!(m && m->sq_item))) {
        PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
        return NULL;
    }
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
    PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
    if (likely(m && m->mp_subscript)) {
        return m->mp_subscript(obj, key);
    }
    return __Pyx_PyObject_GetIndex(obj, key);
}
#endif

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
    (void)inplace;
    (void)zerodivision_check;
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
            x = (long)((unsigned long)a + b);
            if (likely((x^a) >= 0 || (x^b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
            }
        }
                x = a + b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla + llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            double result;
            PyFPE_START_PROTECT("add", return NULL)
            result = ((double)a) + (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#endif

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    __Pyx_PyThreadState_declare
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#else
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* None */
static CYTHON_INLINE long __Pyx_mod_long(long a, long b) {
    long r = a % b;
    r += ((r != 0) & ((r ^ b) < 0)) * b;
    return r;
}

/* PyObjectCallNoArg */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, NULL, 0);
    }
#endif
#ifdef __Pyx_CyFunction_USED
    if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
    if (likely(PyCFunction_Check(func)))
#endif
    {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
            return __Pyx_PyObject_CallMethO(func, NULL);
        }
    }
    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
}
#endif

/* DictGetItem */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            if (unlikely(PyTuple_Check(key))) {
                PyObject* args = PyTuple_Pack(1, key);
                if (likely(args)) {
                    PyErr_SetObject(PyExc_KeyError, args);
                    Py_DECREF(args);
                }
            } else {
                PyErr_SetObject(PyExc_KeyError, key);
            }
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#endif

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    #endif
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
#endif

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = a->tp_base;
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
    if (!res) {
        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
    return res;
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        #if PY_MAJOR_VERSION < 3
        if (likely(exc_type == t)) return 1;
        #endif
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
    #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* SetItemInt */
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return m->sq_ass_item(o, i, v);
        }
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
    if (is_list || PySequence_Check(o))
#endif
    {
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject* exc_type = tstate->curexc_type;
    if (unlikely(exc_type)) {
        if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
            PyObject *exc_value, *exc_tb;
            exc_value = tstate->curexc_value;
            exc_tb = tstate->curexc_traceback;
            tstate->curexc_type = 0;
            tstate->curexc_value = 0;
            tstate->curexc_traceback = 0;
            Py_DECREF(exc_type);
            Py_XDECREF(exc_value);
            Py_XDECREF(exc_tb);
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#else
    if (unlikely(PyErr_Occurred())) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#endif
}

/* PyObjectGetMethod */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if PY_MAJOR_VERSION >= 3
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
        #endif
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (descr != NULL) {
        *method = descr;
        return 0;
    }
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'%.50s' object has no attribute '%U'",
                 tp->tp_name, name);
#else
                 "'%.50s' object has no attribute '%.400s'",
                 tp->tp_name, PyString_AS_STRING(name));
#endif
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}

/* PyObjectCallMethod0 */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* RaiseNeedMoreValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* RaiseTooManyValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else {
        return __Pyx_IterFinish();
    }
    return 0;
}

/* RaiseNoneIterError */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnpackTupleError */
static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_COMPILING_IN_PYPY
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = Py_TYPE(iter)->tp_iternext;
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#elif PY_MAJOR_VERSION >= 3
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* UnpackUnboundCMethod */
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    target->method = method;
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION >= 3
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    #endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    }
#endif
    return 0;
}

/* CallUnboundCMethod0 */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_ASSUME_SAFE_MACROS
    args = PyTuple_New(1);
    if (unlikely(!args)) goto bad;
    Py_INCREF(self);
    PyTuple_SET_ITEM(args, 0, self);
#else
    args = PyTuple_Pack(1, self);
    if (unlikely(!args)) goto bad;
#endif
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    Py_DECREF(args);
bad:
    return result;
}

/* py_dict_keys */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d);
    else
        return PyDict_Keys(d);
}

/* JoinPyUnicode */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      CYTHON_UNUSED Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind;
    Py_ssize_t i, char_pos;
    void *result_udata;
#if CYTHON_PEP393_ENABLED
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    result_udata = PyUnicode_DATA(result_uval);
#else
    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = sizeof(Py_UNICODE);
    result_udata = PyUnicode_AS_UNICODE(result_uval);
#endif
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
        if (unlikely(__Pyx_PyUnicode_READY(uval)))
            goto bad;
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        if (unlikely(!ulength))
            continue;
        if (unlikely(char_pos + ulength < 0))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
        } else {
            #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    result_ulength++;
    value_count++;
    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
#endif
}

/* None */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* CallUnboundCMethod1 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
    if (likely(cfunc->func)) {
        int flag = cfunc->flag;
        if (flag == METH_O) {
            return (*(cfunc->func))(self, arg);
        } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) {
            if (PY_VERSION_HEX >= 0x030700A0) {
                return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
            } else {
                return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
            }
        } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) {
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
        }
    }
    return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(1);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 0, arg);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 1, arg);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(2, self, arg);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (!py_import)
        goto bad;
    #endif
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
                module = PyImport_ImportModuleLevelObject(
                    name, global_dict, empty_dict, list, 1);
                if (!module) {
                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_MAJOR_VERSION < 3
            PyObject *py_level = PyInt_FromLong(level);
            if (!py_level)
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, global_dict, empty_dict, list, level);
            #endif
        }
    }
bad:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    Py_XDECREF(empty_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* ImportFrom */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Format(PyExc_ImportError,
        #if PY_MAJOR_VERSION < 3
            "cannot import name %.230s", PyString_AS_STRING(name));
        #else
            "cannot import name %S", name);
        #endif
    }
    return value;
}

/* HasAttr */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_GetAttr(o, n);
    if (unlikely(!r)) {
        PyErr_Clear();
        return 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}

/* CallNextTpTraverse */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
    PyTypeObject* type = Py_TYPE(obj);
    while (type && type->tp_traverse != current_tp_traverse)
        type = type->tp_base;
    while (type && type->tp_traverse == current_tp_traverse)
        type = type->tp_base;
    if (type && type->tp_traverse)
        return type->tp_traverse(obj, v, a);
    return 0;
}

/* CallNextTpClear */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
    PyTypeObject* type = Py_TYPE(obj);
    while (type && type->tp_clear != current_tp_clear)
        type = type->tp_base;
    while (type && type->tp_clear == current_tp_clear)
        type = type->tp_base;
    if (type && type->tp_clear)
        type->tp_clear(obj);
}

/* PyObject_GenericGetAttrNoDict */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'%.50s' object has no attribute '%U'",
                 tp->tp_name, attr_name);
#else
                 "'%.50s' object has no attribute '%.400s'",
                 tp->tp_name, PyString_AS_STRING(attr_name));
#endif
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
    PyObject *descr;
    PyTypeObject *tp = Py_TYPE(obj);
    if (unlikely(!PyString_Check(attr_name))) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    assert(!tp->tp_dictoffset);
    descr = _PyType_Lookup(tp, attr_name);
    if (unlikely(!descr)) {
        return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
    }
    Py_INCREF(descr);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
    #endif
    {
        descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
        if (unlikely(f)) {
            PyObject *res = f(descr, obj, (PyObject *)tp);
            Py_DECREF(descr);
            return res;
        }
    }
    return descr;
}
#endif

/* PyObject_GenericGetAttr */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
    if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError */
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
}

/* SetupReduce */
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
#else
    if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
#endif
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
            if (likely(reduce_cython)) {
                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred())
        PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* SetVTable */
static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    if (unlikely(!__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
    }
    else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = NULL;
    PyObject *py_funcname = NULL;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_srcfile = NULL;
    py_srcfile = PyString_FromString(filename);
    if (!py_srcfile) goto bad;
    #endif
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        funcname = PyUnicode_AsUTF8(py_funcname);
        if (!funcname) goto bad;
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        if (!py_funcname) goto bad;
        #endif
    }
    #if PY_MAJOR_VERSION < 3
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    #else
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    #endif
    Py_XDECREF(py_funcname);  // XDECREF since it's only set on Py3 if cline
    return py_code;
bad:
    Py_XDECREF(py_funcname);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_srcfile);
    #endif
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* FetchCommonType */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* PyObjectCallMethod1 */
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
    PyObject *method = NULL, *result;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_Call2Args(method, obj, arg);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) return NULL;
    return __Pyx__PyObject_CallMethod1(method, arg);
}

/* CoroutineBase */
#include <structmember.h>
#include <frameobject.h>
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#if PY_VERSION_HEX >= 0x030300A0
        else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            Py_DECREF(ev);
        }
#endif
        else if (unlikely(PyTuple_Check(ev))) {
            if (PyTuple_GET_SIZE(ev) >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#else
                value = PySequence_ITEM(ev, 0);
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PySequence_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
    PyObject *t, *v, *tb;
    t = exc_state->exc_type;
    v = exc_state->exc_value;
    tb = exc_state->exc_traceback;
    exc_state->exc_type = NULL;
    exc_state->exc_value = NULL;
    exc_state->exc_traceback = NULL;
    Py_XDECREF(t);
    Py_XDECREF(v);
    Py_XDECREF(tb);
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
    const char *msg;
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
    const char *msg;
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check(gen)) {
        msg = "can't send non-None value to a just-started coroutine";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
        msg = "can't send non-None value to a just-started async generator";
    #endif
    } else {
        msg = "can't send non-None value to a just-started generator";
    }
    PyErr_SetString(PyExc_TypeError, msg);
}
#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_Check(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    __Pyx_ExcInfoStruct *exc_state;
    PyObject *retval;
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
        }
    }
    if (unlikely(self->resume_label == -1)) {
        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    exc_state = &self->gi_exc_state;
    if (exc_state->exc_type) {
        #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
        #else
        if (exc_state->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            assert(f->f_back == NULL);
            #if PY_VERSION_HEX >= 0x030B00A1
            f->f_back = PyThreadState_GetFrame(tstate);
            #else
            Py_XINCREF(tstate->frame);
            f->f_back = tstate->frame;
            #endif
        }
        #endif
    }
#if CYTHON_USE_EXC_INFO_STACK
    exc_state->previous_item = tstate->exc_info;
    tstate->exc_info = exc_state;
#else
    if (exc_state->exc_type) {
        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(exc_state);
        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    }
#endif
    self->is_running = 1;
    retval = self->body((PyObject *) self, tstate, value);
    self->is_running = 0;
#if CYTHON_USE_EXC_INFO_STACK
    exc_state = &self->gi_exc_state;
    tstate->exc_info = exc_state->previous_item;
    exc_state->previous_item = NULL;
    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
#endif
    return retval;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
    PyObject *exc_tb = exc_state->exc_traceback;
    if (likely(exc_tb)) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
#else
        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
#endif
    }
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
    if (unlikely(!retval)) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        if (!__Pyx_PyErr_Occurred()) {
            PyObject *exc = PyExc_StopIteration;
            #ifdef __Pyx_AsyncGen_USED
            if (__Pyx_AsyncGen_CheckExact(gen))
                exc = __Pyx_PyExc_StopAsyncIteration;
            #endif
            __Pyx_PyErr_SetNone(exc);
        }
    }
    return retval;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
static CYTHON_INLINE
PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
#if PY_VERSION_HEX <= 0x030A00A1
    return _PyGen_Send(gen, arg);
#else
    PyObject *result;
    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
        if (PyAsyncGen_CheckExact(gen)) {
            assert(result == Py_None);
            PyErr_SetNone(PyExc_StopAsyncIteration);
        }
        else if (result == Py_None) {
            PyErr_SetNone(PyExc_StopIteration);
        }
        else {
            _PyGen_SetStopIterationValue(result);
        }
        Py_CLEAR(result);
    }
    return result;
#endif
}
#endif
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyCoro_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        {
            if (value == Py_None)
                ret = Py_TYPE(yf)->tp_iternext(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        retval = __Pyx_Coroutine_FinishDelegation(gen);
    } else {
        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
    }
    return __Pyx_Coroutine_MethodReturn(self, retval);
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
    } else
    #endif
    {
        PyObject *meth;
        gen->is_running = 1;
        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                PyErr_WriteUnraisable(yf);
            }
            PyErr_Clear();
        } else {
            retval = PyObject_CallFunction(meth, NULL);
            Py_DECREF(meth);
            if (!retval)
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, Py_None);
        } else
        #endif
            ret = Py_TYPE(yf)->tp_iternext(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Coroutine_FinishDelegation(gen);
    }
    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
}
static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, CYTHON_UNUSED PyObject *arg) {
    return __Pyx_Coroutine_Close(self);
}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
    if (unlikely(retval)) {
        const char *msg;
        Py_DECREF(retval);
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_Check(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
#if PY_VERSION_HEX < 0x03060000
            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
#else
            msg = "async generator ignored GeneratorExit";
#endif
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
        if (raised_exception) PyErr_Clear();
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
            goto throw_here;
        }
        gen->is_running = 1;
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_Check(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                    gen->is_running = 0;
                    return NULL;
                }
                PyErr_Clear();
                __Pyx_Coroutine_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            if (likely(args)) {
                ret = PyObject_CallObject(meth, args);
            } else {
                ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
            }
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Coroutine_FinishDelegation(gen);
        }
        return __Pyx_Coroutine_MethodReturn(self, ret);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
    Py_VISIT(exc_state->exc_type);
    Py_VISIT(exc_state->exc_value);
    Py_VISIT(exc_state->exc_traceback);
    return 0;
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_code);
    Py_CLEAR(gen->gi_frame);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
        if (PyObject_CallFinalizerFromDealloc(self))
#else
        Py_TYPE(gen)->tp_del(self);
        if (Py_REFCNT(self) > 0)
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    PyObject_GC_Del(gen);
}
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
#if !CYTHON_USE_TP_FINALIZE
    assert(self->ob_refcnt == 0);
    __Pyx_SET_REFCNT(self, 1);
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
#else
        {PyObject *msg;
        char *cmsg;
        #if CYTHON_COMPILING_IN_PYPY
        msg = NULL;
        cmsg = (char*) "coroutine was never awaited";
        #else
        char *cname;
        PyObject *qualname;
        qualname = gen->gi_qualname;
        cname = PyString_AS_STRING(qualname);
        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
        if (unlikely(!msg)) {
            PyErr_Clear();
            cmsg = (char*) "coroutine was never awaited";
        } else {
            cmsg = PyString_AS_STRING(msg);
        }
        #endif
        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
            PyErr_WriteUnraisable(self);
        Py_XDECREF(msg);}
#endif
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *res = __Pyx_Coroutine_Close(self);
        if (unlikely(!res)) {
            if (PyErr_Occurred())
                PyErr_WriteUnraisable(self);
        } else {
            Py_DECREF(res);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
    assert(Py_REFCNT(self) > 0);
    if (--self->ob_refcnt == 0) {
        return;
    }
    {
        Py_ssize_t refcnt = Py_REFCNT(self);
        _Py_NewReference(self);
        __Pyx_SET_REFCNT(self, refcnt);
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(Py_TYPE(self)) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    _Py_DEC_REFTOTAL;
#endif
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *name = self->gi_name;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_name;
    Py_INCREF(value);
    self->gi_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *name = self->gi_qualname;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_qualname;
    Py_INCREF(value);
    self->gi_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *frame = self->gi_frame;
    if (!frame) {
        if (unlikely(!self->gi_code)) {
            Py_RETURN_NONE;
        }
        frame = (PyObject *) PyFrame_New(
            PyThreadState_Get(),            /*PyThreadState *tstate,*/
            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
            __pyx_d,                 /*PyObject *globals,*/
            0                               /*PyObject *locals*/
        );
        if (unlikely(!frame))
            return NULL;
        self->gi_frame = frame;
    }
    Py_INCREF(frame);
    return frame;
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->gi_exc_state.exc_type = NULL;
    gen->gi_exc_state.exc_value = NULL;
    gen->gi_exc_state.exc_traceback = NULL;
#if CYTHON_USE_EXC_INFO_STACK
    gen->gi_exc_state.previous_item = NULL;
#endif
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    Py_XINCREF(code);
    gen->gi_code = code;
    gen->gi_frame = NULL;
    PyObject_GC_Track(gen);
    return gen;
}

/* PatchModuleWithCoroutine */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    int result;
    PyObject *globals, *result_obj;
    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
    #ifdef __Pyx_Coroutine_USED
        (PyObject*)__pyx_CoroutineType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_generator_type",
    #ifdef __Pyx_Generator_USED
        (PyObject*)__pyx_GeneratorType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
    if (unlikely(!result_obj)) goto ignore;
    Py_DECREF(result_obj);
    Py_DECREF(globals);
    return module;
ignore:
    Py_XDECREF(globals);
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    py_code++;
#endif
    return module;
}

/* PatchGeneratorABC */
#ifndef CYTHON_REGISTER_ABCS
#define CYTHON_REGISTER_ABCS 1
#endif
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
static PyObject* __Pyx_patch_abc_module(PyObject *module);
static PyObject* __Pyx_patch_abc_module(PyObject *module) {
    module = __Pyx_Coroutine_patch_module(
        module, ""
"if _cython_generator_type is not None:\n"
"    try: Generator = _module.Generator\n"
"    except AttributeError: pass\n"
"    else: Generator.register(_cython_generator_type)\n"
"if _cython_coroutine_type is not None:\n"
"    try: Coroutine = _module.Coroutine\n"
"    except AttributeError: pass\n"
"    else: Coroutine.register(_cython_coroutine_type)\n"
    );
    return module;
}
#endif
static int __Pyx_patch_abc(void) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    static int abc_patched = 0;
    if (CYTHON_REGISTER_ABCS && !abc_patched) {
        PyObject *module;
        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
        if (!module) {
            PyErr_WriteUnraisable(NULL);
            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
                    ((PY_MAJOR_VERSION >= 3) ?
                        "Cython module failed to register with collections.abc module" :
                        "Cython module failed to register with collections module"), 1) < 0)) {
                return -1;
            }
        } else {
            module = __Pyx_patch_abc_module(module);
            abc_patched = 1;
            if (unlikely(!module))
                return -1;
            Py_DECREF(module);
        }
        module = PyImport_ImportModule("backports_abc");
        if (module) {
            module = __Pyx_patch_abc_module(module);
            Py_XDECREF(module);
        }
        if (!module) {
            PyErr_Clear();
        }
    }
#else
    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
#endif
    return 0;
}

/* Generator */
static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the generator"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the generator"), 0},
    {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     (char*) PyDoc_STR("Frame of the generator"), 0},
    {0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
    0,
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    (iternextfunc) __Pyx_Generator_Next,
    __pyx_Generator_methods,
    __pyx_Generator_memberlist,
    __pyx_Generator_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
    0,
#endif
};
static int __pyx_Generator_init(void) {
    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
    if (unlikely(!__pyx_GeneratorType)) {
        return -1;
    }
    return 0;
}

/* CheckBinaryVersion */
static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* InitStrings */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type %.200s).  "
                "The ability to return an instance of a strict subclass of int "
                "is deprecated, and may be removed in a future version of Python.",
                Py_TYPE(result)->tp_name)) {
            Py_DECREF(result);
            return NULL;
        }
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type %.200s)",
                 type_name, type_name, Py_TYPE(result)->tp_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(b);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    const digit* digits = ((PyLongObject*)b)->ob_digit;
    const Py_ssize_t size = Py_SIZE(b);
    if (likely(__Pyx_sst_abs(size) <= 1)) {
        ival = likely(size) ? digits[0] : 0;
        if (size == -1) ival = -ival;
        return ival;
    } else {
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
    return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
  } else if (likely(PyInt_CheckExact(o))) {
    return PyInt_AS_LONG(o);
#endif
  } else {
    Py_ssize_t ival;
    PyObject *x;
    x = PyNumber_Index(o);
    if (!x) return -1;
    ival = PyInt_AsLong(x);
    Py_DECREF(x);
    return ival;
  }
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


#endif /* Py_PYTHON_H */
